Bir SQL desen ifadesi ve arasındaki tüm numaraları eşleştirmek istediğiniz arasındaki tüm numaraları maç için.MSSQL desen [1-999]
DÜZENLEME: MSSQL yılında
. regex var gibi
Bir SQL desen ifadesi ve arasındaki tüm numaraları eşleştirmek istediğiniz arasındaki tüm numaraları maç için.MSSQL desen [1-999]
DÜZENLEME: MSSQL yılında
. regex var gibi
bir karakter sınıfı için SQL GİBİ operatör desen eşleştirme kullanarak, karakter sınıfının hiçbir joker tekrarı yok. Diğer bir deyişle, size karşılaştırabilirsiniz önce [0-9]+
veya [0-9]{1,3}
gibi şeyler
Yani, sıfır-pad ile numarasına sahip (bunlardan ikisi de 0
yakalayacağı) yapamaz.
doğrudan bir desen değil, ama bu ifadesi GİBİ operatör bağlı olarak görev yapar ve aralarında pozitif tamsayılar için çalışacak 1 ve 999:
RIGHT('00' + myfield, 3) LIKE '[0-9][0-9][0-9]'
AND RIGHT('00' + myfield, 3) <> '000'
AND LEN(myfield) <= 3
Düzenleme: varsayım şey olmadığı yapılan Belirttiğinizden beri Microsoft SQL Server hakkında konuşun.
Hangi DBMS '' GİBİ '' [0-9] [0-9] [0-9] ''çalışacak? Standart bir SQL 'LIKE' joker karakteri değildir (standart SQL sadece'% 've' _' joker karakterlerini, "aralıklarını" anlamamaktadır) –
Bazılarının hepsi büyük ölçüde regex'i desteklemese de. MySQL'de "NEREDE REGEXP" yazabilirim^[1-9] [0-9] {1,2} $ ' – Hameed
@Hameed: Bunu anlıyorum, ama örneğiniz 'LIKE' operatörünü kullanmadı. –
SELECT * FROM table WHERE field BETWEEN 1 AND 999;
DÜZENLEME:Bu yalnızca PostgreSQL çalışacaktır.
sonra, böyle bir şey dizeleri eşleştirmek için bir regexp desen arıyorsanız: regexp patterns üzerine dokümantasyon
SELECT * FROM table WHERE field ~ '[1-9][0-9]{1,2}';
kontrol dışarı.
SQL Server normal ifadeleri desteklemez olduğu gibi. Regular Expressions in SQL Server servers?:
Aşağıdaki workaround Bu soruyu veya kullanabilirsiniz.
Tüm DBMS desen ve joker aramalar açısından aynı standardı izleyin. Spesifik olmalısın. Başlangıçta sorunuzun da doğru etiketleri yoktu. – Hameed