如何在DB Browser(SQLite)中提取路径中的指定格式字符串?
解决方案
要提取路径中\\xxxxxxx04\\xxx或\\yyyy03\\yyyyyyy这类包含服务器名和共享名的前缀,在SQLite中可以通过嵌套使用INSTR函数定位到对应反斜杠位置,再截取目标片段。
方法一:直接嵌套函数
SELECT path, SUBSTR( path, 1, -- 定位第四个反斜杠的位置,截取到它之前的内容 INSTR(path, '\', INSTR(path, '\', INSTR(path, '\', INSTR(path, '\') + 1) + 1) + 1) - 1 ) AS target_prefix FROM results;
方法二:用WITH子句分步计算(可读性更高)
如果觉得嵌套函数可读性差,可通过WITH子句先分步计算每个反斜杠的位置,再完成截取:
WITH path_parts AS ( SELECT path, INSTR(path, '\') AS first_slash, INSTR(path, '\', INSTR(path, '\') + 1) AS second_slash, INSTR(path, '\', INSTR(path, '\', INSTR(path, '\') + 1) + 1) AS third_slash, INSTR(path, '\', INSTR(path, '\', INSTR(path, '\', INSTR(path, '\') + 1) + 1) + 1) AS fourth_slash FROM results ) SELECT path, SUBSTR(path, 1, fourth_slash - 1) AS target_prefix FROM path_parts;
说明
SQLite的INSTR(str, substr, start)支持指定起始位置搜索子串,通过依次定位第1到第4个反斜杠的位置,就能精准截取到包含\\服务器名\\共享名的完整前缀部分。
内容的提问来源于stack exchange,提问作者Zuhairi Tusiman
相关产品推荐
相关产品推荐

