gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:28:03 25 4
gpt4 key购买 nike

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com