选择TableData,其中ColumnData以字符串列表开头

时间:2018-09-08 12:38:37

标签: sql sql-like startswith

以下是从表中选择列数据的查询,其中列数据以OR b OR c开头。但是我要寻找的答案是选择以字符串列表开头的数据。

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

但是我想要类似的东西

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

有人可以建议选择以String列表开头的列数据的最佳方法是什么,我不想使用OR运算符(特别是字符串列表)。

2 个答案:

答案 0 :(得分:1)

您必须使用的最通用的解决方案是:

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也有类似正则表达式的支持。

答案 1 :(得分:0)

要添加到Tim's answer中,另一种方法可能是使用这些值的子查询将表联接起来:

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 || '%'