用于字符串间距的多个组合的类SQL运算符?
我试图返回所有结果,其中一列包含两个变量(@Width和@Height,按该顺序排列) 我是这样设置的:用于字符串间距的多个组合的类SQL运算符?,sql,sql-server,Sql,Sql Server,我试图返回所有结果,其中一列包含两个变量(@Width和@Height,按该顺序排列) 我是这样设置的: SELECT * FROM table WHERE table.description LIKE '% '+@Width+'"% '+@Height+'"%'; 这对于间隔正确的记录非常有用:HIP 6“X 4”数字签名。但是,有许多记录的间距不正确,例如:hip6“X4”数字符号,或hip6“X4”标准符号,等等 我已尝试从LIKE中删除所需的空格,这解决了该问题,但
SELECT * FROM table WHERE table.description LIKE '% '+@Width+'"% '+@Height+'"%';
这对于间隔正确的记录非常有用:HIP 6“X 4”数字签名
。但是,有许多记录的间距不正确,例如:hip6“X4”数字符号
,或hip6“X4”标准符号
,等等
我已尝试从LIKE中删除所需的空格,这解决了该问题,但随后我得到了不正确的记录,如HIP 16“X 24”Sign Digital
。我只想搜索准确的数字,而不是任何以匹配数字结尾的数字
我如何在只搜索两个完全匹配的变量的情况下解释不同的间距组合?在我开始在这里工作之前,有没有什么方法可以做到这一点,而不必进入并标准化输入的数千条记录?删除这些空格怎么样
where replace(table.description, ' ', '') like '%' + @Width + '"%' + @Height + '"%'
您可能要搜索:
where replace(table.description, ' ', '') like '%' + @Width + '"x' + @Height + '"%'
当输入6和4时,仍然会错误地返回16“X 24”之类的记录。我只希望它返回6“X 4”。将前导的
%
替换为“[a-z]`
declare @Width varchar(10)='6', @Height varchar(10)='4';
select *
from
(
values
('HIP 6" X 4" Sign Digital'), ('HIP 6"X4"'), ('HIP 6" X4"'), ('6" X4" Digital'),
('HIP7 6" X 4"'), ('HIP 6" X 4" Sign Digital'), ('HIP 6"X 4" Sign Digital'),
('HIP 16" X 4"'), ('HIP 6" X 24"'), ('HIP6 " X 4"')
) as t(description)
where '.' + replace(replace(replace(replace(replace(description, ' ', '- '), ' -', ''), '- ', ' '), 'X ', 'X'), ' X', 'X') like '%[^0-9]'+@Width+'"X'+@Height+'"%';