webForumDet fria alternativet

Omskrivning av SQL-sats, gälla även för NULL

Databaser & SQL

2 svar · 570 visningar · startad av Fredde Mannen

Medlem sedan nov. 20014 054 inlägg
Frågan#1
Select * from T_FOG_FORSLAG fog inner join 
			(
				select ifog.FOG_ID, (Count(*) * 1.0 / @Wordcount) as traffpoang
					from T_FOG_FORSLAG ifog 
					inner join @Table tbl on 
						(
							ifog.FOG_NAMN like '%'+ tbl.item +'%' OR
							ifog.FOG_DIARIENUMMER like '%'+ tbl.item +'%' OR
							CONVERT(VARCHAR(8000),ifog.FOG_PROBLEMBESKRIVNING) like '%'+ tbl.item +'%' OR 
							CONVERT(VARCHAR(8000),ifog.FOG_FORSLAG) like '%'+ tbl.item +'%' OR
							CONVERT(VARCHAR(8000),ifog.FOG_FORVANTAT_RESULTAT) like '%'+ tbl.item +'%'
						)
					group by ifog.FOG_ID
			) a on fog.FOG_ID = a.FOG_ID Where
traffpoang = 1  or @MatchType <> 1 AND .... -- fler sökkriterier

Denna kodsnutt ut SP funkar hyfsat bra och den söker som jag önskar.. dock får jag genast problem med den när min intext är NULL. Då blir givetvis min table variabel tom, och där med drabbas mina LIKE i denna snutt. Och resultatet blir då givetvis att inga poster träffas.

Jag skulle vilja modda denna del ur SPn så att om min intext är NULL så skall samtliga poster hämtas..

items i table variabeln läggs in på följande sätt, söktext: hejsan på dig

då splitas söktexten och läger in hejsan, på, dig på varsin rad i den temporära tabellen så att säga, som sedan kolumnerna som skall genomsökas använder LIKE gentemot.

Medlem sedan nov. 20014 054 inlägg
#2

Löste det med:

			 ' '+ ifog.FOG_DIARIENUMMER+' '+ifog.FOG_NAMN+' '+CONVERT(VARCHAR(8000),ISNULL(ifog.FOG_PROBLEMBESKRIVNING,''))+' '+CONVERT(VARCHAR(8000),ISNULL(ifog.FOG_FORSLAG,'')) +' '+CONVERT(VARCHAR(8000),ISNULL(ifog.FOG_FORVANTAT_RESULTAT,'')) + ' ' like '%'+ tbl.item +'%'

istället. :)

Medlem sedan dec. 20025 483 inlägg
257 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)