[英]SQL match for 5 or less wildcards
我有一个变量,该变量作为一列中的值存在,但是仅当该变量位于特定位置时,才需要提取列值。
也就是说,前5个字符之后,或者可能是前3个字符之后,但不超过5个。
如果该值在5之后存在,则不应返回。
最有效的方法是什么?
样品:
query = "SELECT * FROM table WHERE (
name LIKE '_____$abc%'
OR material LIKE '_____$abc%'
OR material LIKE '____$abc%'
OR material LIKE '___$abc%'
OR material LIKE '__$abc%'
OR material LIKE '_$abc%'
OR material LIKE '_$abc%'
OR material LIKE '$abc%'
)";
这是我提取它的唯一方法吗?
您可以为此使用CHARINDEX
。 它为您提供了一个字符串在另一个字符串中的第一个位置。 在下面的示例中,我将要查找的数据称为'string'
样本数据;
CREATE TABLE #TestData (Name varchar(10), material varchar(50))
INSERT INTO #TestData (Name, material)
VALUES
('Aaron','asdfasdfstring')
,('Billy','asdfstring')
,('Clive','asstring')
,('Dave','asdffsdastring')
,('Eric','ddstring')
,('Frankie','stringasdfasdf')
查询;
SELECT
Name
,material
FROM #TestData
WHERE CHARINDEX('string',material) <= 5
结果;
Name material
Billy asdfstring
Clive asstring
Eric ddstring
Frankie stringasdfasdf
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.