試圖將PostgreSQL視圖轉換爲SQL Server(2016)視圖。使用SQL WHERE LIKE在連續編號時進行篩選
我有一個表,一個名爲列名,數據如下:
- R24bMP1.png
- MP3.png
- R28.jpg
- I002.jpg
- App_1472669569054 .jpg
- Test_1575753047890.png
所以,我喜歡過濾所有行的文件名必須包含13個連續的數字,在這個例子中,只有App_1472669569054.jpg
和Test_1575753047890.png
。
在PostgreSQL,我可以使用正則表達式來做到這一點:
SELECT * FROM table WHERE filename ~ '\d{13}'
。
在SQL Server中嘗試使用: SELECT * FROM table WHERE filename LIKE '%[0-9]{13}%'
,但沒有得到任何結果。只有工作方式是:
SELECT * FROM table WHERE filename LIKE '%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%'
在那之後,我需要得到僅文件名的數字部分,在本例中,返回的值必須是:
我知道我可以使用CLR與SQL Server,但我想知道如果可能在這種情況下過濾沒有CLR。
或'PATINDEX( '%' + REPLICATE( '[0-9]',13)+ '%',@文件名)'更簡潔一點。 –
@MartinSmith非常真實! – SqlZim
使用replicate()+1更容易在我的大腦中 –