Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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函数与下划线不匹配_Sql_Contains - Fatal编程技术网

包含的sql函数与下划线不匹配

包含的sql函数与下划线不匹配,sql,contains,Sql,Contains,我有一些表“TableName”,比如Id、名称: 1 | something 2 | _something 3 | something like that 4 | some_thing 5 | ... 我想从这个表中获取名称包含“some”的所有行。 我有两种方法: SELECT * FROM TableName WHERE Name like '%some%' 结果如下表所示: 1 | something 2 | _something 3 | something like that 4

我有一些表“TableName”,比如Id、名称:

1 | something
2 | _something
3 | something like that
4 | some_thing
5 | ...
我想从这个表中获取名称包含“some”的所有行。 我有两种方法:

SELECT * FROM TableName WHERE Name like '%some%'
结果如下表所示:

1 | something
2 | _something
3 | something like that
4 | some_thing
但是如果我使用CONTAINS函数

SELECT * FROM TableName WHERE CONTAINS(Name,'"*some*"')
我只有

1 | something
3 | something like that
我应该怎么做才能使CONTAINS函数正常工作

如果你读了这篇文章,你会发现*表示前缀,这意味着单词必须以这个开头,但like表示单词包含关键词

致以最良好的祝愿, Iordan

试试这个:

SELECT * FROM TableName WHERE CONTAINS(Name,'some')

上一次我查看SQL Server 2000时,在单词的开头不支持通配符匹配,只在单词的结尾支持通配符匹配。此外,您可能需要检查噪波文件,以查看是否忽略了u字符

也看到


我知道前缀*代表什么,我用它来获取字符串,比如“像那样的东西”或“这是什么东西”。我对如何使用CONTAINS函数获取带下划线的字符串很感兴趣。然后,您必须再添加一个带下划线的CONTAINS函数,父函数为SELECT*,从表名中选择CONTAINSName、'some'或CONTAINSName、'U some','U some'如果我使用它,我可以获取像'SOUTHE'、'U SOUTHE'之类的字符串,但无法获取'SOUTHE'。我想用单词“some”来获取所有字符串,所以你的方法不是万能的。使用like运算符或只是添加或包含名称,“some”在前面的表达式中我更喜欢使用like you,我尝试使用它,但包含名称,“some”与“this”字符串不匹配,只有“something”。一方面包含比Like语句更快的工作,另一方面包含与我希望的字符串不匹配的字符串,所以你是对的,我最好使用Like。