繁体   English   中英

SQL匹配5个或更少的通配符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM