Toon posts:

[ms-sql] varchar zoeken '%_%' wil niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
De topic zegt het eigenlijk al,

code:
1
2
3
4
5
6
7
8
9
10
11
select nodename, directoryname, count(*)
from tmp
where nodename like 'svr%' 
and directoryname like '%_%'

--En dit wil ook niet :(
--and contains(directoryname, '_')
--and freetext(cast(directoryname as text) , '_')
--directoryname not like 'F:\Users\_%'

group by nodename, directoryname


Het gaat erom dat er een de f:\users\piet wel in de telling wordt meegenomen maar f:\users\_oldPiet niet.

Dit vind ik in de help:

Wildcard Meaning
% Any string of zero or more characters.
_ Any single character.
[ ] Any single character within the specified range (for example, [a-f]) or set (for example, [abcdef]).
[^] Any single character not within the specified range (for example, [^a - f]) or set (for example, [^abcdef]).

Dus hoe haal ik die _ weg?

Ik vond
code:
1
and freetext(cast(directoryname as text) , '_')


eigenlijk ookwel leuk bedacht, vrom werkt dat niet?

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Die freetext werkt enkel als je de Full Text indexing service geinstalleerd en geconfigureerd hebt.

Je zult die underscore (_) moeten escapen, aangezien het ook een wildcard-character is.

Probeer het eens zo:
code:
1
2
3
4
SELECT *
FROM tabel
WHERE naam LIKE 'blaat%'
AND naam NOT LIKE '\_%'

https://fgheysels.github.io/


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

MS SQL kent vast een escape-char:
expr LIKE pat [ESCAPE 'escape-char']

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Yep, idd. Ik heb het net even opgezocht.
Je moet geen \ gebruiken als escape character, maar brackets.

Zo dus:
code:
1
2
select * from tabel
where naam not like '[_]%'

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 18 februari 2004 @ 12:18:
Yep, idd. Ik heb het net even opgezocht.
Je moet geen \ gebruiken als escape character, maar brackets.

Zo dus:
code:
1
2
select * from tabel
where naam not like '[_]%'
:| Schaam :/

thx het werkt

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

whoami schreef op 18 februari 2004 @ 12:18:
Yep, idd. Ik heb het net even opgezocht.
Je moet geen \ gebruiken als escape character, maar brackets.

Zo dus:
code:
1
2
select * from tabel
where naam not like '[_]%'
Uhm, ja en nee ;)
Met brackets geef je een range aan (en daarbinnen hoef je de underscore niet te escapen). Echt escapen doe je zoals ACM aangaf met een escape char, bijv:

code:
1
2
select * from tabel
where naam not like '\_%' ESCAPE '\'

Today's subliminal thought is:


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Hmmm, dat van die ESCAPE clause wist ik niet. Thx.

https://fgheysels.github.io/

Pagina: 1