2017-01-05 2 views
1

je googlé et googlé je googlé un peu plus ... Cependant, je ne peux pas comprendre cela.SQL Server PatIndex que signifie le point et le trait d'union? (PATINDEX ('% [0-9 .-]%)

Que diable fait le point et trait d'union signifie dans la commande SQL Server suivante (après le 9) ...

PATINDEX ('% [0-9 .-]%'

Voici le code au travail ...

declare @tv_raw table(recnum int identity(1, 1) primary key, rawdata nvarchar(max)) 
insert into @tv_raw(rawdata) values('Washington 40 New Orleans 32') 
insert into @tv_raw(rawdata) values('St. Louis 23 Detroit 27')  

select SubString(rawdata, PatIndex('%[0-9.-]%', rawdata)+3,PatIndex('%[0-9.-]%', rawdata)) 
from @tv_raw 
+0

le point et le tiret sont simplement d'autres critères de recherche dans la liste délimitée par []. Donc n'importe quel chiffre 0-9, c'est-à-dire 0,1,2 ..., 8,9 ou un point ou trait d'union. – scsimon

Répondre

1

Patindex renvoie ..

Renvoie la position de départ de la première occurrence d'un motif dans une expression spécifiée, ou des zéros si le motif ne se trouve pas, sur tous les textes valides et les types de données de caractère

Il retourne première position de tout caractère trouvé dans le modèle ... voir les exemples ci-dessous modifiés

declare @tv_raw table(recnum int identity(1, 1) primary key, rawdata nvarchar(max)) 
insert into @tv_raw(rawdata) values('Wa0shington- 40 New Orleans 32') 
insert into @tv_raw(rawdata) values('St.- Louis 23 Detroit 27')  

select PatIndex('%[0-9-]%', rawdata) 
from @tv_raw 

sortie: