以下是从表中选择列数据的查询,其中列数据以OR b OR c开头。但是我要寻找的答案是选择以字符串列表开头的数据。
SELECT * FROM Table WHERE Name LIKE '[abc]%'
但是我想要类似的东西
SELECT * FROM Table WHERE Name LIKE '[ab,ac,ad,ae]%'
有人可以建议选择以String列表开头的列数据的最佳方法是什么,我不想使用OR运算符(特别是字符串列表)。
答案 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 || '%'