Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server,结合了LIKE和IN?_Sql_Sql Server_Regex_Sql Like - Fatal编程技术网

SQL Server,结合了LIKE和IN?

SQL Server,结合了LIKE和IN?,sql,sql-server,regex,sql-like,Sql,Sql Server,Regex,Sql Like,有没有一种简单的方法可以在SQL Server中将与之类的和合并到一条语句中,而不必使用大量的和或 e、 g.我知道在MySQL中,您可以这样做: SELECT * FROM table1 WHERE column1 REGEXP 'value1|value2|value3' 不是真的 与模式语法类似,在模式语法中没有交替运算符。如果在2008年,您可以使用 SELECT * FROM table1 WHERE EXISTS(SELECT * FROM (

有没有一种简单的方法可以在SQL Server中将
之类的
合并到一条语句中,而不必使用大量的

e、 g.我知道在MySQL中,您可以这样做:

SELECT * FROM table1 WHERE column1 REGEXP 'value1|value2|value3'
不是真的

模式语法类似,在
模式语法中没有交替运算符。如果在2008年,您可以使用

SELECT *
FROM   table1
WHERE  EXISTS(SELECT *
              FROM   (VALUES ('value1'),
                             ('value2'),
                             ('value3')) Vals(val)
              WHERE  column1 LIKE '%' + val + '%')  

您也可以在SQL Server中使用正则表达式,但不能以本机方式使用。您需要启用CLR并为此安装一个程序集。

另一个选项是将搜索值放入表中,并构建一个动态SQL来完成这项工作。不推荐使用,但有时会有帮助…

嗨,马丁。谢谢你的建议。我试过了,但是得到了下面的错误消息“关键字'VALUES'附近的语法不正确”。严重程度15'@200-我想你不在2008年。在以前的版本中,在派生表定义中使用
SELECT'value1'UNION ALL SELECT'value2'UNION ALL SELECT'value3'
可以实现类似的功能,这有点繁琐。谢谢Martin。现在就这样:)。想知道为什么微软没有实现一个更简单的方法来实现这一点,虽然…可能重复的