喜欢或不喜欢通配符

时间:2015-10-21 09:44:25

标签: sql sql-server

我遇到这种情况:

CREATE TABLE ProvaSrl
    (id int IDENTITY(1,1) PRIMARY KEY,
     Ragsoc varchar(20))

INSERT ProvaSrl VALUES ('pippo spa'),
                       ('pluto srl'),
                       ('paperino s.r.l'),
                       ('minnie S.R.L'),
                       ('topolino SRL')

SELECT * FROM dbo.ProvaSrl
WHERE ragsoc LIKE 

我想查找s.r.l列中包含srlSRLS.R.LRagSoc的所有记录。我有不区分大小写的数据库。

我可以使用LIKE运算符吗?

4 个答案:

答案 0 :(得分:0)

使用此

SELECT * FROM dbo.ProvaSrl WHERE ragsoc LIKE  '%s.r.l%'
union
SELECT * FROM dbo.ProvaSrl WHERE ragsoc LIKE  '%srl%'
union
SELECT * FROM dbo.ProvaSrl WHERE ragsoc LIKE  '%S.R.L%'

答案 1 :(得分:0)

select *
from dbo.ProvaSrl
where ragsoc like '%s.r.l%'
   or ragsoc like '%srl%'

对于大写和小写都不需要LIKE,因为该列被认为是不区分大小写的。

答案 2 :(得分:0)

SELECT * FROM dbo.ProvaSrl
WHERE upper(ragsoc) LIKE '%S.R.L%'
   OR upper(ragsoc) LIKE '%SRL%'

答案 3 :(得分:0)

如果您需要这些特定字符串,请使用or

select p.*
from dbo.ProvaSrl
where ragsoc COLLATE Latin1_General_CS_AS like '%s.r.l' COLLATE Latin1_General_CS_AS or
      ragsoc COLLATE Latin1_General_CS_AS like '%srl' COLLATE Latin1_General_CS_AS or
      ragsoc COLLATE Latin1_General_CS_AS like '%SRL' COLLATE Latin1_General_CS_AS or
      ragsoc COLLATE Latin1_General_CS_AS like 'S.R.L.' COLLATE Latin1_General_CS_AS ;

我猜您只想查看ragsoc列的结尾。如果它们可以出现在任何地方,请在模式的末尾添加一个额外的通配符。

这使用区分大小写的排序规则来完全匹配问题中提到的四个字符串。