我有兩個字段的表:firstnamedb1和firstnamedb2在兩場不同的SQL找主角
我需要得到那些犯規的比賽,但也想知道有多少個字符是不同的。
例如,如果我有:
firstnamedb1 firstnamedb2
RICHARD RICHRAD
然後我知道這是一個不匹配的結果,但也我知道,只有2個字符是不同的。
這樣我就知道,「可能」,沒有匹配的結果是misstype錯誤,可以手動修復非常容易。
希望有人能幫助我。非常感謝
我有兩個字段的表:firstnamedb1和firstnamedb2在兩場不同的SQL找主角
我需要得到那些犯規的比賽,但也想知道有多少個字符是不同的。
例如,如果我有:
firstnamedb1 firstnamedb2
RICHARD RICHRAD
然後我知道這是一個不匹配的結果,但也我知道,只有2個字符是不同的。
這樣我就知道,「可能」,沒有匹配的結果是misstype錯誤,可以手動修復非常容易。
希望有人能幫助我。非常感謝
select firstnamedb1, firstnamedb2, dbo.numdiffchars(firstnamedb1, firstnamedb2)
from yourTable
where firstnamedb1 <> firstnamedb2
create function dbo.numdiffchars(@n1 varchar(60), @n2 varchar(60))
returns int
as begin
declare @baselen int,
@extension int,
@xpos int,
@numdiff int;
if len(@n1) <= len(@n2) select @baselen = len(@n1)
else select @baselen = len(@n2)
if len(@n1) < @baselen select @extension = (@baselen - len(@n1))
else if len(@n2) < @baselen select @extension = (@baselen - len(@n2))
select @xpos = 0, @numdiff = 0;
while @xpos < @baselen begin
select @xpos = @xpos + 1
if substring(@n1, @xpos, 1) <> substring(@n2, @xpos, 1)
select @numdiff = @numdiff + 1
end
return @numdiff + @extension
end
如果這解決了您的問題,請標記爲答案。
即時通訊運行它,但我得到NULL,任何線索?非常感謝 – VAAA
唯一值得關注的是被比較的名稱之一是否爲空;我沒有構建函數來適應這種情況,但如果是這種情況,請將select語句更改爲:從yourTable中選擇firstnamedb1,firstnamedb2,dbo.numdiffchars(isnull(firstnamedb1,''),isnull(firstnamedb2,''))其中isnull(firstnamedb1,'')<> isnull(firstnamedb2,'') –
我想不出一個不會非常繁瑣的解決方案。加上這個事實,有很多西方人的名字只有一個字母(Jay-Jan,Alex-Alec,Simon-Simone),我不禁質疑你的做法。爲了儘可能多地計算字母的不同長度(以及處理不同長度的名稱),您可能需要製作一些粗糙的字體,然後在視覺上進行其他處理。保羅和寶拉可能很高興結婚(或者你代表的任何關係),而寶拉則因爲人們不斷將她的名字改爲保羅而臨牀上很沮喪。 – Zec