Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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_Sql Server - Fatal编程技术网

用于字符串间距的多个组合的类SQL运算符?

用于字符串间距的多个组合的类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中删除所需的空格,这解决了该问题,但

我试图返回所有结果,其中一列包含两个变量(@Width和@Height,按该顺序排列)

我是这样设置的:

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+'"%';