SQL - ВЫБЕРИТЕ все записи, ограниченные определенными символами - PullRequest
0 голосов
/ 17 марта 2019

Я довольно плохо знаком с SQL, поэтому мне отчаянно нужна поддержка по следующему вопросу:
один из столбцов таблицы, к которой я обращаюсь, содержит очень длинные и различные текстовые значения: поэтому я хотел бы ограничить выводтолько некоторые виды.

Я хотел бы получить в качестве результата запроса то же содержимое, ограниченное [az] [AZ] [0-9], например, так:

  • Исходная таблица: Hello /% World, 2019
  • Результат запроса: Hello World 2019

У кого-нибудь есть идеи?

Большое спасибо

Ответы [ 4 ]

0 голосов
/ 17 марта 2019

Предполагается, что regexp_replace поддерживается,

regexp_replace(column, '[^a-zA-Z0-9]', '')
0 голосов
/ 17 марта 2019

ЛУЧШИЙ ВАРИАНТ: Удалите все специальные символы, не оставляя пробелов

SELECT REGEXP_REPLACE(your_column, '[^0-9A-Za-z]', '') AS newfield
FROM tablename; 

Удалите много символов, оставив пробелы для того же количества символов удаленными

SELECT TRANSLATE(columnname,'!@#$%^&*()', 
'          ' ) AS newfield
FROM tablename;

Если вы просто хотите заменить один символ

SELECT REPLACE('columnname', '%', '') AS newfield
From tablename;

Если вы ищете что-то конкретное (Вы хотите найти слова «Hello World»2019 ")

Select ‘Hello World 2019' AS newfield
From tablename
WHERE columnname like ‘Hello%’ AND columnname like ‘%World%’ AND columnname like ‘%2019’;

Предполагается, что Hello - это всегда начало, а 2019 - всегда в конце, и вам нужны все поля.Если вам нужны другие поля, вы можете захотеть и их;как,

Select TableID, columnname, ‘Hello World 2019' AS newfield
From tablename
WHERE columnname like ‘Hello%’ AND columnname like ‘%World%’ AND columnname like ‘%2019’;
0 голосов
/ 17 марта 2019
$string = 'Hello /% World, 2019';

Уберите все символы, кроме букв и цифр из строки PHP:

$res = preg_replace("/[^a-zA-Z0-9]/", "", $string);

Удалите все символы, кроме букв, цифр и пробелов:

$res = preg_replace("/[^a-zA-Z0-9\s]/", "", $string);
0 голосов
/ 17 марта 2019

Вы не упомянули, какой движок SQL вы используете, но большинство движков поддерживают строковую функцию REPLACE, которую можно использовать для замены любого символа, который вы хотите, пустой строкой, чтобы удалить его.Вам придется вложить несколько из них, чтобы избавиться от разных персонажей.Проверьте документацию вашей базы данных на синтаксис.Например:

SELECT REPLACE(REPLACE('Hello /% World, 2019, '/', ''), '%','')

В общем, я бы сказал, что это не работа механизма базы данных, и вы можете сделать это на своем уровне представления.

HTH

...