SQL中从Title列提取_tid-后的数字的查询方法
从Title列提取“_tid-”后的数字的SQL查询
根据需求,以下是不同SQL方言下的实现方案,针对Title列中_tid-后缀的数字进行提取:
MySQL/MariaDB
使用正则表达式函数直接捕获数字部分:
SELECT Title, REGEXP_SUBSTR(Title, '_tid-(\\d+)', 1, 1, NULL, 1) AS Extracted_TID FROM your_table_name;
说明:REGEXP_SUBSTR通过正则_tid-(\\d+)匹配目标片段,最后一个参数1指定返回第一个捕获组(即括号内的数字部分)。
SQL Server(2016及以上版本)
利用正则替换提取目标数字:
SELECT Title, REGEXP_REPLACE(Title, '.*_tid-(\d+).*', '$1') AS Extracted_TID FROM your_table_name;
如果使用更早版本,可通过字符定位函数实现:
SELECT Title, CASE WHEN CHARINDEX('_tid-', Title) > 0 THEN SUBSTRING( Title, CHARINDEX('_tid-', Title) + 5, ISNULL(PATINDEX('%[^0-9]%', SUBSTRING(Title, CHARINDEX('_tid-', Title) + 5, LEN(Title))), LEN(Title) - CHARINDEX('_tid-', Title) - 4) ) ELSE NULL END AS Extracted_TID FROM your_table_name;
PostgreSQL
PostgreSQL的SUBSTRING原生支持正则捕获组:
SELECT Title, SUBSTRING(Title FROM '_tid-(\d+)') AS Extracted_TID FROM your_table_name;
Oracle
通过REGEXP_SUBSTR指定捕获组提取数字:
SELECT Title, REGEXP_SUBSTR(Title, '_tid-(\d+)', 1, 1, 'i', 1) AS Extracted_TID FROM your_table_name;
注:若部分Title不含_tid-片段,上述查询会返回NULL,可根据需求使用COALESCE函数设置默认值。
内容的提问来源于stack exchange,提问作者karan_kn
相关产品推荐
相关产品推荐

