1. sql 匹配相似記錄
不知道你的相似度判斷的規則是什麼,通過資料庫實現的話,可以考慮定義一個相似度比較函數,然後在update時調用並判斷,下面是MSSQL的思路,不過需要把相似度判斷的函數寫完整。
其他資料庫應該也可以用相同思路來做吧。
FUNCTION fn_GetSimilar
(
@strA As Varchar(255), --傳入的待比較的字元
@StrB As Varchar(255 --期望字元
)
RETURNS int
AS
BEGIN
DECLARE @Result int;
if @strA= @StrB
begin
set @Result=100
end
----
--相似度判斷條件及判斷方法賦值
----
RETURN @Result
END
如果函數測試沒問題,就可以調用下面的方法來修改了
update 不規則名稱表 set StdMedName=b.CommonName from 標准名稱表 b
where dbo.fn_GetSimilar( 不規則名稱表.IrrMedName,b.CommonName)>相似度的值
2. WPS如何實現輸入值與資料庫匹配相似度
選中這些數據區域,右鍵,復制,再右鍵,選擇性粘貼,數值,確定。
3. sql怎麼查詢一列數據的相似度
with t as (select 'xspasdfdfsdfz,xpaysdfsdss,xparsdfd' a from al)
selectsubstr(y.a,1,x.lvl-1) returnvalue from (selectdistinct(lvl) lvl from (select rn,first_value(lvl) over(orderby lvl) lvl,cnt from (select rn,lvl,count(distinct(str)) cnt from (select rn,level lvl,substr(str,1,level) as str from (select rn,str from (select rn,regexp_substr(a,'[^,]+',1,level,'i') as str from (selectrownum rn,a from t) connectby
level<=length(a)-length(regexp_replace(a,',',''))+1)) connectbylevel<=length(str)) groupby rn,lvl orderby lvl asc) where cnt<>1)) x leftjoin t y on1=1;
RETURNVALUE
--------------------------------------------------------------------------------
x
SQL> with t as (select 'xxxxasdfdfsdfz,xxxxxysdfsdss,xxxxxxxxsdfd' a from al)
select substr(y.a,1,x.lvl-1) returnvalue from (select distinct(lvl) lvl from (select rn,first_value(lvl) over(order by lvl) lvl,cnt from (select rn,lvl,count(distinct(str)) cnt from (select rn,level lvl,substr(str,1,level) as str from (select rn,str from (select rn,regexp_substr(a,'[^,]+',1,level,'i') as str from (select rownum rn,a from t) connect by
3 level<=length(a)-length(regexp_replace(a,',',''))+1)) connect by level<=length(str)) group by rn,lvl order by lvl asc) where cnt<>1)) x left join t y on 1=1
4 ;
RETURNVALUE
--------------------------------------------------------------------------------
xxxx
這個例子 'xxxxasdfdfsdfz,xxxxxysdfsdss,xxxxxxxxsdfd' 是把這些放在一行裡面 如果是一列數據 可以把列轉成行
SQL> select * from tt;
ID NAME
---------- ------------------------------
1 aab
1 aac
2 ddca
2 ddcp
2 ddco
SQL> select id,wm_concat(name) newstr from tt group by id;
ID NEWSTR
---------- --------------------
1 aab,aac
2 ddca,ddco,ddcp
這樣把最上面的SQL寫成函數,直接用函數來處理各分組裡面相似度