我有一个变量,该变量作为一列中的值存在,但是仅当变量在特定位置时才需要提取列值。
即在前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
关于php - SQL匹配5个或更少的通配符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37875068/