尝试将PostgreSQL视图转换为SQL Server(2016)视图。
我有一个名为filename的列表,其中包含以下数据:
所以,我喜欢过滤文件名必须包含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的情况下进行过滤。
答案 0 :(得分:4)
正如马丁史密斯指出的那样:
<div class='select-widget'>
{{#each allContacts}}
<div id='{{_id}}' class='select-widget-row {{#if selected}}selected{{/if}}'>
{{fullname}}
</div>
{{/each}}
</div>
可以简化为:
'%[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]%'
你大部分时间都在那里:
'%' + replicate('[0-9]',13) + '%'
返回:declare @filename varchar(128) = 'Test_1575753047890.png'
select test=substring(@filename
,patindex('%' + replicate('[0-9]',13) + '%',@filename)
,13
)
所以对于你的表,它看起来像:
1575753047890