上海建设网站便宜的,wordpress 报价,潍坊网站开发高手,厦门seo百度快照优化Area#xff1a;‘安徽;宣城;宣州’#xff0c;要提取分号之前#xff0c;两个分号之前#xff0c;最后一个分号之后的内容作为省市区 这是最后得到的正确的结果#xff0c;感谢chatgpt 刚开始本来想使用splitByString
-- 宣城
select splitByString(;,安徽;宣城;宣州)[2…Area‘安徽;宣城;宣州’要提取分号之前两个分号之前最后一个分号之后的内容作为省市区 这是最后得到的正确的结果感谢chatgpt 刚开始本来想使用splitByString
-- 宣城
select splitByString(;,安徽;宣城;宣州)[2];可以直接指定分隔符拆分成字符串数组但是我的这个表的这个字段设计是Nullable类型的没法使用这个函数使用这个函数会报错就算使用where过滤也是不行的 select splitByString(‘;’,Area)[2] from (select Area from table where Area is not null and Area ! ‘’);
还有positionUTF8substringUTF8也尝试过了也不能对Nullable类型的字段使用
select Area,positionUTF8(Area,;,1),substringUTF8(Area,1,length(Area)-positionUTF8(Area,;,1))
from table where BillNo 76AJNX1ZE334FD2;
最后只能用extract函数了通过正则表达式进行提取。-- 1,获取省
SELECTextract(安徽;宣城;宣州, ([^;])) AS extracted_text,extractAll(安徽;宣城;宣州, ([^;]))[3] AS extracted_text2;SELECTArea,extract(Area, ([^;])) from table where BillNo 76AJNX1ZE314FD1;
-- 最简单的方式是使用extractAll(安徽;宣城;宣州, ([^;]))根据分号拆分成数组但是由于clickhouse限制无法对Nullable类型的字符串使用这个函数
-- 等同于splitByString函数select splitByString(;,安徽;宣城;宣州)[2];
-- SELECT
-- extractAll(Area, ([^;]))[3] AS extracted_text2 from table where BillNo 76AJNX1ZE334FD2;
-- 2,获取市
SELECTextract(安徽;宣城;宣州, ;([^;]);) AS extracted_text;-- 3,获取区
SELECT extract(安徽;宣城;宣州, ;([^;])$) AS extracted_text;