You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Presto SQL中如何移除字符串中指定模式起始后的内容?

SQL实现指定模式前的字符串保留方案

针对你需要保留hi {{user_name}}模式之前内容、移除模式及后续部分的需求,不同SQL方言的实现如下:

MySQL/MariaDB 实现

利用LOCATE定位模式位置,结合SUBSTRING截取目标片段,最后用TRIM清理末尾多余空格:

SELECT 
  CASE 
    WHEN LOCATE('hi {{user_name}}', input_str) > 0 
    THEN TRIM(TRAILING ' ' FROM SUBSTRING(input_str, 1, LOCATE('hi {{user_name}}', input_str) - 1))
    ELSE input_str 
  END AS cleaned_str
FROM your_table;

PostgreSQL 实现

用STRPOS替代LOCATE,逻辑和MySQL一致:

SELECT 
  CASE 
    WHEN STRPOS(input_str, 'hi {{user_name}}') > 0 
    THEN TRIM(TRAILING ' ' FROM SUBSTRING(input_str, 1, STRPOS(input_str, 'hi {{user_name}}') - 1))
    ELSE input_str 
  END AS cleaned_str
FROM your_table;

SQL Server 实现

使用CHARINDEX定位,LEFT截取片段,RTRIM清理空格:

SELECT 
  CASE 
    WHEN CHARINDEX('hi {{user_name}}', input_str) > 0 
    THEN RTRIM(LEFT(input_str, CHARINDEX('hi {{user_name}}', input_str) - 1))
    ELSE input_str 
  END AS cleaned_str
FROM your_table;

补充说明

  • 若目标字符串中不存在hi {{user_name}},会直接返回原字符串,匹配你的示例需求
  • TRIM/RTRIM用于移除模式前可能存在的多余空格,保证输出格式整洁
  • 如果需要忽略大小写匹配,可以在定位时用LOWER函数统一转换字符串,比如LOCATE(LOWER('hi {{user_name}}'), LOWER(input_str))

内容的提问来源于stack exchange,提问作者Keyang Zhang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 20:04:56