NL Computer Forum

Maak het zelf => Select * from SQL => Topic gestart door: RPA op 9 juni 2010, 19:17:48

Titel: select from .. like met een 1 of meer quotes in de naam?
Bericht door: RPA op 9 juni 2010, 19:17:48
Weet iemand hoe je met een like statement in SQL server 2008/2005 (volgens mij is het een algemeen probleem) kan maken indien je een naam zoekt met 1 of meerdere quotes in de naam?
 
Bijvoorbeeld iemand heeft L' Programmer, hoe maak je dan de like statement?
select * from relatie where relatienaam like '%L'%' wordt afgekeurd of
select * from relatie where relatienaam like "%L'%" wordt vanwege de dubbele quotes afgekeurd.
 
Is dit gewoon weg niet mogelijk of moet er een escape teken ergens staan?
Titel: Re: select from .. like met een 1 of meer quotes in de naam?
Bericht door: Ronald op 9 juni 2010, 22:40:29
Hoi RPA,

Er zijn ongetwijfeld meerdere mogelijkheden, wat ik zelf zou doen:

set quoted_identifier off
select * from relatie where relatienaam like "%L'%"
set quoted_identifier on

Hiermee verander je tijdelijk het teken waarmee je het begin en einde van strings aangeeft. :)
Deze code werkt in ieder geval op SQL2000 en SQL2008, en dus zeer waarschijnlijk ook met SQL2005.

Succes!

Groeten,

Ronald
Titel: Re: select from .. like met een 1 of meer quotes in de naam?
Bericht door: RPA op 10 juni 2010, 07:39:16
Bedankt voor het antwoord, ik kende deze optie niet --> set quoted_identifier off
Titel: Re: select from .. like met een 1 of meer quotes in de naam?
Bericht door: Hugo op 15 oktober 2010, 12:13:24
Oei, ik ben hier al heel lang niet meer geweest, zie ik. *schaam*
Vreemd overigens dat ik geen notificatie heb gekregen van dit topic, ik had notificatie voor dit board wel aangezet.

Enfin, toch nog even een antwoord (voor mensen die hier via google terecht komen, want ik denk niet dat dit voor RPA nog relevant is).
De meest gebruikelijke manier om een single quote in een string op te nemen in SQL Server, is door de quote te verdubbelen. Dus:
DECLARE @Tekst varchar(20);
SET @Tekst = 'Brien O''Hare';
zal de variabele @Tekst vullen met de naam Brian O'Hare.

Bij een LIKE werkt dat precies zo:
select * from relatie where relatienaam like '%L''%'
Titel: Re: select from .. like met een 1 of meer quotes in de naam?
Bericht door: Ronald op 15 november 2010, 21:53:25
Hoi Hugo,

Nog zeer bedankt voor deze tip! :D

Groeten,

Ronald