我通常不是一個懂SQL的人,但需要從MSSql上的一個人的名單中找到匹配的名字/姓氏。我試圖從TABLENAME中找到類似的名字,以匹配我所擁有的人的名單。這一行看起來像這樣:
Select *
from TABLENAME(nolock)
Where SomeRule='04' RTRIM(SecondName) ' ''RTRIM(SecondName) ' ' RTRIM(Surname) in (THE LIST OF PEOPLE HERE)
但是這個方法只給我有第二個名字的人的匹配。如果某人沒有第二個名字,但他們的名字 姓氏匹配,就不會顯示出來。我想看到那些名字-第二名字-姓氏或名字-姓氏(如果他們沒有第二名字)100%匹配的人。 提前感謝你們
uj5u.com熱心網友回復:
提供的人的名單是一個表
Select distinct t.*
from TABLENAME t.
join [THE LIST OF PEOPLE HERE] lp on SomeRule='04>
and RTRIM(t.Name) = lp.Name
and RTRIM(t.Surname) = lp.Surname
and (t.SecondName is null and pl. SecondName is null or RTRIM(t.SecondName) = lp.SecondName)
uj5u.com熱心網友回復:
讓我們看一下一些行:
沒有中間名的人找不到,因為在你創建的字串中,名字和姓氏之間有兩個空格。我們不知道中間名的人不能被找到,因為串聯的字串是空的。
你可以使用CASE WHEN來檢查,并作出相應的反應:
select *
from tablename
where somerule = '04'
并且
rtrim(name) ' '
case when rtrim(secondname)是 null then ''
when rtrim(secondname) = '' then ''
else rtrim(secondname) ' '
結束
rtrim(surname) in (the list of people here)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/314825.html
標籤:
下一篇:在存盤程序內部傳遞輸入引數
