我正在使用 SQL Server 2019 计算机和一个表,其中包含文件名和有关文件的其他详细信息的列表。该表中有超过 200 万行。
我们使用 .NET Framework 4.6 应用程序来查询此表。我们想根据这种模式过滤行,但我想不出一种编写方法。即使 chatGPT 似乎也无法编写它,但我觉得有一些方法可以做到这一点,但我缺少。我一直遇到的问题是,SQL Server 似乎没有一种方法来查找字符或不查找字符,有点像它是可选的。
图案:
应该有效的示例条目:
123-456789 somethnljdsflkjsdf.ext
123456789 newsomething.ext
123_456_789 jlkajsdfkl.ext
这是我到目前为止所想到的:
SELECT *
FROM [#testingTable] AS [tt]
WHERE [tt].[TestingValue] LIKE '012[_-]%325[_-]%020[_-]%000'
我会做这样的事情:
SELECT *
FROM [#testingTable] AS [tt]
WHERE REPLACE(REPLACE([tt].[TestingValue], '-', ''), '_', '') LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
你只有 4 种排列,所以可以把它们列出来
WHERE TestingValue LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%'
OR TestingValue LIKE '[0-9][0-9][0-9][_-][0-9][0-9][0-9][0-9][0-9][0-9]%'
OR TestingValue LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][_-][0-9][0-9][0-9]%'
OR TestingValue LIKE '[0-9][0-9][0-9][_-][0-9][0-9][0-9][_-][0-9][0-9][0-9]%'