выберите TableData, где ColumnData начинаются со списка строк - PullRequest
0 голосов
/ 08 сентября 2018

Ниже приведен запрос на выбор данных столбца из таблицы, где данные столбца начинаются с ИЛИ b ИЛИ c. Но ответ, который я ищу, состоит в том, чтобы выбрать данные, которые начинаются со списка строк.

SELECT *  FROM Table WHERE Name LIKE '[abc]%'

Но я хочу что-то вроде

SELECT *  FROM Table WHERE Name LIKE '[ab,ac,ad,ae]%'

Кто-нибудь может подсказать, каков наилучший способ выбора данных столбца, который начинается со списка строк, я не хочу использовать оператор ИЛИ, конкретно список строк.

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

Чтобы добавить к ответу Тима , другой подход может заключаться в том, чтобы объединить вашу таблицу с подзапросом этих значений:

SELECT *
FROM   mytable t
JOIN   (SELECT 'ab' AS value
        UNION ALL
        SELECT 'ac'
        UNION ALL
        SELECT 'ad'
        UNION ALL
        SELECT 'ae') v ON t.vame LIKE v.value || '%'
0 голосов
/ 08 сентября 2018

Самое общее решение, которое вам нужно использовать, это:

SELECT *
FROM Table
WHERE Name LIKE 'ab%' OR Name LIKE 'ac%' OR Name LIKE 'ad%' OR Name LIKE 'ae%';

Однако некоторые базы данных предлагают некоторую поддержку регулярных выражений, которую вы можете использовать. Например, в SQL Server вы можете написать:

SELECT *
FROM Table
WHERE NAME LIKE 'a[bcde]%';

MySQL имеет оператор REGEXP, который поддерживает операции регулярного выражения LIKE, и вы можете написать:

SELECT *
FROM Table
WHERE NAME REGEXP '^a[bcde]';

Oracle и Postgres также поддерживают регулярные выражения.

...