我在数据库中有以下数据:
index
我想创建一个将传递值
的查询' 030203082'
,它将显示以下所有记录。
0203020308260226
020302030826022633
02030203082602263332
0203020308270201
0203020308270222
0203020308290218
02030203082902180208
0203020308290224
02030203082902240208
但如果我通过
' 0302030829999'
它也应该归还给我 结果,因为至少80%匹配。
0203020308260226
020302030826022633
02030203082602263332
0203020308270201
0203020308270222
0203020308290218
02030203082902180208
0203020308290224
02030203082902240208
02030203082902240208
我试过这个查询
0203020308260226
020302030826022633
02030203082602263332
0203020308270201
0203020308270222
0203020308290218
02030203082902180208
0203020308290224
02030203082902240208
02030203082902240208
答案 0 :(得分:2)
我不确定我是否完全理解您的问题,但您可以使用DIFFERENCE
功能,例如
SELECT *
FROM yourtable
WHERE DIFFERENCE('0302030829999', column) = 4;
答案 1 :(得分:0)
如果您要在列中搜索特定长度的单词,请尝试使用以下查询。
SELECT *
FROM YourTable
WHERE columnA like '%'+LEFT('0302030829999',9)+'%'
答案 2 :(得分:0)
这可以作为一个起点
DECLARE @SearchKey VARCHAR(100) = '0302030829999'
SELECT *
FROM MyTable
WHERE columnA LIKE '%' + @SearchKey +'%' -- Exact match
OR columnA LIKE '%' + LEFT(@SearchKey,LEN(@SearchKey)*0.8) +'%' -- 80% from start
OR columnA LIKE '%' + RIGHT(@SearchKey,LEN(@SearchKey)*0.8) +'%' -- 80% from end
希望有所帮助