Preciso corresponder a uma string contendo pelo menos 6 dígitos. Estou tendo um problema com isso.
Este exemplo ajudará:
IF OBJECT_iD('tempdb..#Sample') IS NOT NULL DROP TABLE #Sample
CREATE TABLE #Sample(Field VARCHAR(50))
GO
INSERT INTO #Sample (Field) VALUES ('ABC123 ')
INSERT INTO #Sample (Field) VALUES ('ABC1')
INSERT INTO #Sample (Field) VALUES ('ABC1')
INSERT INTO #Sample (Field) VALUES ('ABC123.')
INSERT INTO #Sample (Field) VALUES ('ABC123&')
INSERT INTO #Sample (Field) VALUES ('ABC123&')
INSERT INTO #Sample (Field) VALUES ('ABC1234567&')
INSERT INTO #Sample (Field) VALUES ('ABC12345&')
INSERT INTO #Sample (Field) VALUES ('DataMigrationLog_Bak3')
DECLARE @PAT VARCHAR(500)
SELECT '%[^a-z0-9 .]%' PAT, * FROM #Sample WHERE Field LIKE '%[^a-z0-9 .]%'
SELECT @PAT = '%[(\d{6})]%'
SELECT @PAT PATVAR, * FROM #Sample WHERE Field LIKE @PAT
SELECT '%[(\d{3})]%' PAT, * FROM #Sample WHERE Field LIKE '%[(\d{3})]%'
Ao usar este padrão - %[(\d{6})]%
Ele dá duas linhas
ABC1234567&
DataMigrationLog_Bak3
O que estou perdendo aqui?