Это отмечено как дубликат для печати байта [] . Примечание: для массива байтов существуют дополнительные методы, которые могут быть подходящими.
Вы можете напечатать его как строку, если он содержит символы ISO-8859-1.
String s = new String(bytes, StandardChars.ISO_8559);
System.out.println(s);
// to reverse
byte[] bytes2 = s.getBytes(StandardChars.ISO_8559);
или если он содержит строку UTF-8
String s = new String(bytes, StandardChars.UTF_8);
System.out.println(s);
// to reverse
byte[] bytes2 = s.getBytes(StandardChars.UTF_8);
или если вы хотите напечатать ее как шестнадцатеричную.
String s = DatatypeConverter.printHexBinary(bytes);
System.out.println(s);
// to reverse
byte[] bytes2 = DatatypeConverter.parseHexBinary(s);
или если вы хотите напечатать ее как base64.
String s = DatatypeConverter.printBase64Binary(bytes);
System.out.println(s);
// to reverse
byte[] bytes2 = DatatypeConverter.parseBase64Binary(s);
или если вы хотите напечатать массив подписанных байтовых значений
String s = Arrays.toString(bytes);
System.out.println(s);
// to reverse
String[] split = s.substring(1, s.length() - 1).split(", ");
byte[] bytes2 = new byte[split.length];
for (int i = 0; i < bytes2.length; i++)
bytes2[i] = Byte.parseByte(split[i]);
или если вы хотите напечатать массив значений без знакового байта
String s = Arrays.toString(
IntStream.range(0, bytes.length).map(i -> bytes[i] & 0xFF).toArray());
System.out.println(s);
// to reverse
String[] split = s.substring(1, s.length() - 1).split(", ");
byte[] bytes2 = new byte[split.length];
for (int i = 0; i < bytes2.length; i++)
bytes2[i] = (byte) Integer.parseInt(split[i]); // might need a range check.
Хотя вы можете псевдонизировать свои таблицы в своем запросе (т. е. «SELECT u.username FROM users u;»), вы должны использовать фактические имена столбцов, на которые вы ссылаетесь. AS влияет только на то, как возвращаются поля.
Либо:
SELECT u_name AS user_name
FROM users
WHERE u_name = "john";
, либо:
SELECT user_name
from
(
SELECT u_name AS user_name
FROM users
)
WHERE u_name = "john";
Последнее должно быть таким же, как и первое, если RDBMS поддерживает сканирование предикатов в поточном представлении.
См. следующую страницу руководства по MySQL: http://dev.mysql.com/doc/refman/5.0/en/select.html
"A select_expr может быть присвоен псевдоним с использованием AS alias_name. Псевдоним используется как имя столбца выражения и может использоваться в предложениях GROUP BY, ORDER BY или HAVING. "
blockquote>(... )
Нельзя ссылаться на псевдоним столбца в предложении WHERE, поскольку значение столбца может еще не определяться при выполнении предложения WHERE. См. Раздел B.5.4.4 «Проблемы с псевдонимами столбцов».
blockquote>
У меня была та же проблема, я нашел это полезным.
mysql_query("SELECT * FROM `users` WHERE `user_name`='$user'");
не забудьте поставить $ user в '' одинарные кавычки.
Может быть, это помогает.
Вы можете
SET @somevar := '';
SELECT @somevar AS user_name FROM users WHERE (@somevar := `u_name`) = "john";
Он работает.
НО УБЕДИТЕСЬ, ЧТО ВЫ ДЕЛАЕТЕ!
Но может быть, это помогает в некоторых случаях
SQL оценивается в обратном направлении, справа налево. Таким образом, выражение where анализируется и оценивается перед предложением select. Из-за этого псевдонимы u_name для user_name еще не произошли.
Нет, вы не можете. user_name не существует до времени возврата.
SELECT user_name
FROM
(
SELECT name AS user_name
FROM users
) AS test
WHERE user_name = "john"
Если вы пытаетесь выполнить такой запрос, как показано ниже (найдите все узлы с хотя бы одним вложением), где вы использовали оператор SELECT для создания нового поля, которое фактически не существует в базе данных, и попробуйте использовать псевдоним для этого результата, вы столкнетесь с той же проблемой:
SELECT nodes.*, (SELECT (COUNT(*) FROM attachments
WHERE attachments.nodeid = nodes.id) AS attachmentcount
FROM nodes
WHERE attachmentcount > 0;
Вы получите сообщение об ошибке «Неизвестный столбец« attachmentcount »в разделе WHERE».
Решение на самом деле довольно просто - просто замените псевдоним выражением, создающим псевдоним, например:
SELECT nodes.*, (SELECT (COUNT(*) FROM attachments
WHERE attachments.nodeid = nodes.id) AS attachmentcount
FROM nodes
WHERE (SELECT (COUNT(*) FROM attachments WHERE attachments.nodeid = nodes.id) > 0;
. Вы все равно получите возвращаемый псевдоним, но теперь SQL не должен биться с неизвестным псевдоним.
попробуйте выполнить свою задачу, используя условие IN или условие OR, а также этот запрос работает на spark-1.6.x
SELECT patient, patient_id FROM `patient` WHERE patient IN ('User4', 'User3');
или
SELECT patient, patient_id FROM `patient` WHERE patient = 'User1' OR patient = 'User2';
Ваши определенные alias
не приветствуются предложением WHERE
, вы должны использовать предложение HAVING
для этого
SELECT u_name AS user_name FROM users HAVING user_name = "john";
ИЛИ вы можете напрямую использовать имя исходного столбца с помощью кнопки WHERE
SELECT u_name AS user_name FROM users WHERE u_name = "john";
То же, что и результат в пользовательском псевдониме в результате подзапроса или любого вычисления, к которому он будет доступен в HAVING
, а не в WHERE
SELECT u_name AS user_name ,
(SELECT last_name FROM users2 WHERE id=users.id) as user_last_name
FROM users WHERE u_name = "john" HAVING user_last_name ='smith'
Как насчет:
SELECT u_name AS user_name FROM users HAVING user_name = "john";
select u_name as user_name from users where u_name = "john";
Подумайте об этом так, ваше предложение where сначала оценивает, чтобы определить, какие строки (или объединенные строки) должны быть возвращены. После того, как предложение where выполняется, для него выполняется предложение select.
Чтобы это было лучше, представьте это:
select distinct(u_name) as user_name from users where u_name = "john";
Вы не можете ссылаться на первую половину без второй. Где всегда сначала оценивается, а затем предложение select.
Нет, вам нужно выбрать его с правильным именем. Если вы дали таблицу, которую вы выбираете из псевдонима, вы можете использовать это.
Насколько я знаю в MS-SQL 2000/5. В прошлом я обманывал это.
исправлено:
SELECT u_name AS user_name FROM users WHERE u_name = 'john';
У вас была эта проблема.
Убедитесь, что в базе данных нет места в имени объекта.
, например. 'user_name' вместо 'user_name'