如何编写查询提取字符串列中两个问题间的目标答案?
提取固定格式字符串中两个问题间的答案查询方案
针对固定格式的字符串(结构为1. [问题1]? [答案] 2. [问题2]),以下是不同数据库的查询语句,可精准提取两个问题之间的答案:
MySQL
SELECT TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(your_column, '2.', 1), '?', -1)) AS answer FROM your_table;
逻辑:先截取2.之前的内容,再提取该内容中最后一个?之后的部分,最后去除前后空格得到目标答案。
SQL Server
SELECT TRIM(SUBSTRING(your_column, CHARINDEX('?', your_column) + 1, CHARINDEX('2.', your_column) - CHARINDEX('?', your_column) - 1)) AS answer FROM your_table;
逻辑:定位第一个?和2.的位置,截取两者之间的内容后去除前后空格。
PostgreSQL
SELECT TRIM(SUBSTRING(your_column FROM '\?\s*(.*?)\s*2\.')) AS answer FROM your_table;
逻辑:通过正则表达式匹配?与2.之间的内容,捕获后去除前后空格。
以上语句均可从示例字符串中提取出NO作为结果,适配固定格式的输入数据。
内容的提问来源于stack exchange,提问作者Pablo Gúereca
相关产品推荐
相关产品推荐

