我有一个变量,该变量作为一列中的值存在,但是仅当变量在特定位置时才需要提取列值。

即在前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/

10-11 03:19