LarsG: Två kommentarer, efter vad jg hittade efter lite googlande.
Bör inte N-prefixet anges med versalt N?
Borde det inte gå att göra en riktig ("exakt") jämförelse genom att ange collation för sub-selecten? (Känns som ett fulhack att gå runt matchningen 'v' = 'w' med ett sådant specialfall.)
Det hade fungerat om jag vetat att det gällde just bara V/W. Jag vet inte innehållet på förhand. t2.id kan innehålla V/W och det är i jämförelsen med t1.t2_id som jag måste ha en exakt matchning för att inte få tillbaka felaktiga poster.
och ger då underfrågan tillbaka 1V,2V så vill jag inte att huvudfrågan inkluderar 1W och 2W på grund av att villkoret i underfrågan inte sker med exaktheten som id=N'1V' ger.
Hoppas jag är tydligare nu :)
Tillägg:
Det jag vill göra är detta (vilket inte fungerear...)
SELECT * FROM t1
WHERE t2_id IN
N'(SELECT DISTINCT id
FROM t2 INNER JOIN t3 ON t2.pid = t3.pid
WHERE t3.kod = 'ok')
select *
from t1
where cast(t2_id as binary(20)) in
(select cast(id as binary(20))
from t2 join t3
on t2.pid = t3.pid
where t3.kod = 'ok')
Alternativt så kan man, som nitro2k01 säger, använda en collation. T.ex. någon variant av english. Om man konverterar till binary så blir det också skiftlägeskänsligt :).
@notro2k01 Jo, det stämmer att det skall vara N enligt standard.
Jag funderar på att arbeta bort att använda W som en del av detta id. Det är nog att be om problem att göra skillnad mellan v och w - även om det går att lösa så kan det säkert ställa till det i framtiden med andra sql-frågor.
Jag testade lite med att CAST:a till varbinary, men det kan nog bli segt att ha det i en större lösning och jag vill heller inte, som du påpekar, kräva att man måste matcha skiftläge. Som bonus var jag även tvungen att CAST:a underfrågan till nvarchar innan... att ändra om fälttypen är dock praktiskt omöjligt i ett kort perspektiv. Och på sikt blir det nog till att komplettera med ett heltalsfält för matchningen.
Hua vad små saker kan ta tid i anspråk :)
263 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849