SQL Server新手咨询:含指定字符/首尾匹配的LIKE语句写法是否正确
关于SQL Server LIKE操作符的两个问题解答
嘿,作为SQL新手不用慌,咱们一步步把这两个问题理清楚:
问题1:查询包含字母n的countryname列
你的写法有点小问题哦,LIKE 后面每次只能跟一个匹配模式,多个条件需要用逻辑运算符(比如 OR)来连接。
如果你想只要countryname里包含字母n(不管在开头、中间还是结尾),只需要写:
SELECT countryname FROM <table name> WHERE countryname LIKE '%n%';这里的
%是通配符,代表任意长度的任意字符(包括0个字符),所以%n%就表示前后可以有任意内容,只要中间存在n就行。如果你是想明确查询以n开头、以n结尾或者包含n的记录,其实
%n%已经涵盖了后两种情况,不过要是想分开写条件,得这么来:SELECT countryname FROM <table name> WHERE countryname LIKE 'n%' -- 以n开头 OR countryname LIKE '%n' -- 以n结尾 OR countryname LIKE '%n%'; -- 包含n(这行其实可以省略,因为前两种情况已经被包含在这个模式里了)你的原写法把三个模式用逗号隔开是错误的,SQL会直接报错哦。
问题2:查询以字母c开头或以字母y结尾的countryname列
你的原写法在逻辑和模式上都有偏差:
- 首先,你要的是**“以c开头”或者“以y结尾”**,这是逻辑“或”的关系,得用
OR而不是AND; - 其次,模式写错了——
'y%'是以y开头,你要的是以c开头,所以应该是'c%',以y结尾的正确模式是'%y'。
正确的写法应该是:
SELECT countryname FROM <tablename> WHERE countryname LIKE 'c%' -- 以c开头 OR countryname LIKE '%y'; -- 以y结尾
如果用AND的话,会变成查询既以c开头又以y结尾的记录,这和你的需求完全不符啦。
内容的提问来源于stack exchange,提问作者arbys
相关产品推荐
相关产品推荐

