Как я могу найти символы неASCII в MySQL?

Неустранимая ошибка: не может использовать возвращаемое значение функции в контексте записи

Это обычно происходит при непосредственном использовании функции с empty.

Пример:

if (empty(is_null(null))) {
  echo 'empty';
}

Это связано с тем, что empty - это языковая конструкция, а не функция, она не может быть вызвана с выражением в качестве аргумента в версиях PHP до 5.5. До PHP 5.5 аргумент empty() должен быть переменной , но произвольное выражение (такое как возвращаемое значение функции) допустимо в PHP 5.5 +.

empty, несмотря на его имя, на самом деле не проверяет, является ли переменная «пустой». Вместо этого он проверяет, существует ли переменная, или == false. Выражения (например, is_null(null) в примере) всегда будут считаться существующими, поэтому здесь empty проверяет только, равен ли он false. Здесь вы можете заменить empty() на !, например. if (!is_null(null)), или явно сравнить с ложным, например. if (is_null(null) == false).

Вопросы, относящиеся

115
задан Peter Mortensen 31 July 2014 в 22:00
поделиться

3 ответа

Это зависит точно, что Вы определяете как "ASCII", но я предложил бы пробовать вариант запроса как это:

SELECT * FROM tableName WHERE columnToCheck NOT REGEXP '[A-Za-z0-9]';

, Что запрос возвратит все строки, где columnToCheck содержит любые неалфавитно-цифровые символы. Если у Вас есть другие символы, которые приемлемы, добавьте их к классу символов в регулярном выражении. Например, если периоды, запятые и дефисы в порядке, изменяют запрос на:

SELECT * FROM tableName WHERE columnToCheck NOT REGEXP '[A-Za-z0-9.,-]';

самая соответствующая страница документации MySQL, вероятно 12.5.2 Регулярных выражений .

58
ответ дан Braiam 24 November 2019 в 02:19
поделиться

Это, вероятно, что Вы ищете:

select * from TABLE where COLUMN regexp '[^ -~]';

Это должно возвратить все строки, где СТОЛБЕЦ содержит символы неASCII (или непечатаемые символы ASCII, такие как новая строка).

42
ответ дан Peter Mortensen 24 November 2019 в 02:19
поделиться

Вы можете определить ASCII как все символы с десятичным значением 0–127 (0x00–0x7F) и найти столбцы с символами, отличными от ASCII, используя следующий запрос

SELECT * FROM TABLE WHERE NOT HEX(COLUMN) REGEXP '^([0-7][0-9A-F])*$';

Это был самый исчерпывающий запрос, который я мог придумать.

92
ответ дан 24 November 2019 в 02:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: