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

执行SQL语句select * from table where column like '%tom's'时提示语法错误求助

解决SQL LIKE语句中的单引号语法错误

嘿,这个问题我太熟啦!你碰到的是SQL里单引号转义的经典问题~

你写的语句select * from table where column like '%tom's'之所以报错,是因为字符串里的单引号和包裹整个字符串的单引号冲突了:数据库会把第一个'当成字符串的开始,tom后面的那个'就被误判成了字符串的结束,剩下的s'就成了无意义的语法片段,自然会抛出incorrect syntax near 's'的错误。

给你几个靠谱的解决方法:

  • 方法1:转义单引号(最通用,几乎所有数据库都支持)
    在SQL的单引号字符串里,要表示一个普通的单引号,只需要把它写成两个连续的单引号就行。修改后的语句如下:

    select * from table where column like '%tom''s'
    

    这样数据库就会把''解析成一个单独的单引号,整个匹配字符串就是你想要的%tom's。

  • 方法2:用双引号包裹字符串(部分数据库适用)
    如果你的数据库(比如PostgreSQL、MySQL在ANSI_QUOTES模式下)允许用双引号来包裹字符串,也可以换个引号类型避开冲突:

    select * from table where column like "%tom's"
    

    不过要注意,有些数据库里双引号默认是用来标识表名、列名这类标识符的,所以这个方法的兼容性不如第一种。

  • 方法3:参数化查询(应用程序里首选)
    如果你是在应用代码里执行这条SQL,强烈推荐用参数化查询!它不仅能彻底避免这种单引号的语法问题,还能有效防止SQL注入攻击。举个Python的示例(其他编程语言逻辑类似):

    search_key = "%tom's"
    # 假设使用SQLAlchemy连接数据库
    results = db.session.execute(
        "select * from table where column like :search_term",
        {"search_term": search_key}
    )
    

内容的提问来源于stack exchange,提问作者Phạm Văn Tuấn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:14:09