Chcę wyrażenie SQL wzór dopasować wszystkie numery między i .MSSQL wzór dopasować wszystkie numery między [1-999]
EDIT:
w MSSQL.
Chcę wyrażenie SQL wzór dopasować wszystkie numery między i .MSSQL wzór dopasować wszystkie numery między [1-999]
EDIT:
w MSSQL.
Podczas korzystania z dopasowywania wzorców LIKE w SQL dla klasy znaków, nie ma powtórzenia wieloznacznego klasy znaków, tak jak w regex. Innymi słowy, nie można zrobić rzeczy jak [0-9]+
lub [0-9]{1,3}
(oba z nich będzie również przechwytywać 0
)
Tak, masz zero-pad numer, zanim będzie można go porównać.
To nie jest bezpośrednio wzór, ale to wyrażenie opiera się w części na operatora LIKE i będzie pracować dla dodatnich liczb całkowitych między 1 i 999:
RIGHT('00' + myfield, 3) LIKE '[0-9][0-9][0-9]'
AND RIGHT('00' + myfield, 3) <> '000'
AND LEN(myfield) <= 3
Edit: założenie, że jesteś mówiąc o Microsoft SQL Server, ponieważ nie określono.
W którym DBMS będzie "LIKE" [0-9] [0-9] [0-9] "' działa? Z pewnością nie jest to standardowa wieloznacznik SQL 'LIKE' (standardowy SQL rozumie tylko symbole wieloznaczne'% 'i' _', nie ma "zakresów"). –
Chociaż nie wszystkie oprócz niektórych obsługują w dużym stopniu wyrażenie regularne. W MySQL możesz napisać: "WHERE num REGEXP"^[1-9] [0-9] {1,2} $ ' – Hameed
@Hameed: Rozumiem, ale twój przykład nie użył operatora 'LIKE'. –
SELECT * FROM table WHERE field BETWEEN 1 AND 999;
EDIT:ta będzie działać tylko w PostgreSQL.
Jeśli szukasz wzorzec wyrażenia regularnego, aby dopasować ciągi, następnie coś takiego:
SELECT * FROM table WHERE field ~ '[1-9][0-9]{1,2}';
odjazdu dokumentacja na regexp patterns.
Serwer SQL nie obsługuje wyrażeń regularnych jako-jest.
Możesz użyć następującego workaround lub tego pytania: Regular Expressions in SQL Server servers?.
Nie wszystkie DBM mają taki sam standard w odniesieniu do wzorców i wyszukiwań z użyciem symboli wieloznacznych. Musisz być konkretny. Początkowo twoje pytanie również nie miało odpowiednich tagów. – Hameed