使用正则表达式

时间:2016-01-24 14:40:31

标签: sql regex

如果我有专栏,请说:

paths

路径保存文件的绝对路径。

如果我想,要从记录的开头和结尾删除n个字符,对于整个路径列 - 这可能吗?

编辑 - 示例:

让我们说路径中有记录如下:

C:\Users\Alex\Documents\Files\File-1.txt
C:\Users\Alex\Documents\Files\File-2.txt
C:\Users\Alex\Documents\Files\File-3.txt
C:\Users\Alex\Documents\Files\File-4.txt

我想将记录更新为:

Users\Alex\Documents\Files\File-1
Users\Alex\Documents\Files\File-2
Users\Alex\Documents\Files\File-3
Users\Alex\Documents\Files\File-4

基本上从整个列的开头和结尾删除n个字符。

3 个答案:

答案 0 :(得分:0)

一般的正则表达式解决方案是:

^(?:.{3})(.*)(?:.{4})$
# that is match exactly three chars in the beginning (non-capturing group)
# match everything up to the end of the string
# but as .* is sweet-tempered...
# it gives back the four characters in the end ($)
# your match is in the first group

请参阅a demo on regex101.com

答案 1 :(得分:0)

使用此模式并替换为任何内容

^.{3}|.{4}$

Demo

答案 2 :(得分:-1)

标记为SQL时隐含标准SQL:

  

使用SQL标记的问题的答案应该使用ANSI SQL。

不需要比SUBSTRING更复杂的东西,你只需要计算你想要剥离的字符数:

SUBSTRING(path FROM 4 FOR CHARACTER_LENGTH(path)-7)

这也在PostgreSQL中按原样运行:)