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

SQL及谷歌云SQL中单引号(')与双引号(")的使用规范

SQL引号使用场景及选择指南

单引号(' '):字符串常量的标准写法

  • 专门用来包裹字符串类型的数据,比如文本、部分数据库中的日期值,这是SQL标准规定的写法,所有数据库都兼容。
  • 示例:
    SELECT * FROM users WHERE name = 'Alice';
    INSERT INTO logs(content) VALUES ('用户登录成功');
    
  • 如果字符串本身包含单引号,用两个单引号转义就行,比如:'I''m a developer'。

双引号(" "):标识符的可选包裹(看数据库规则)

  • 主要用于包裹表名、列名这类标识符,但不同数据库的规则不一样:
    • PostgreSQL、SQLite 默认支持用双引号包裹标识符,而且会区分大小写,比如:SELECT "UserName" FROM "UserTable";
    • MySQL 默认把双引号当成单引号用(用来包裹字符串),只有开启ANSI_QUOTES配置后,才会把双引号当作标识符包裹符。
    • SQL Server 一般不用双引号,除非开了特定设置。
  • 有些数据库里双引号也能包裹字符串,但这不符合标准,容易混淆,别这么用。

反引号( ):MySQL专属的标识符包裹符

  • 这是MySQL独有的写法,专门解决标识符和关键字重名、或者标识符带特殊字符(空格、连字符)的问题。
  • 示例:
    SELECT `user` FROM `user-info`; -- user是关键字,user-info有特殊字符
    
  • 其他数据库(比如PostgreSQL、SQL Server)不认识反引号,别乱用。

什么时候完全不用引号?

  • 处理整数、浮点数这类数值类型时,直接写数值就行,加引号反而会让数据库把数值当字符串处理,可能出问题:
    SELECT * FROM orders WHERE total > 100.5;
    
  • 用内置函数、合法标识符(不跟关键字重名、没特殊字符)的时候,也不需要引号:
    SELECT COUNT(*) FROM users; -- COUNT是函数,users是合法表名
    

选引号的实用建议

  1. 字符串值:优先用单引号,兼容性拉满,符合标准。
  2. 标识符:
    • 尽量别用关键字或特殊字符当标识符,这样完全不用包裹符最省心。
    • 必须包裹的话:MySQL用反引号,PostgreSQL这类支持ANSI标准的用双引号,别混着用。
  3. 数值类型绝对别加引号,避免性能损耗或计算错误。

内容的提问来源于stack exchange,提问作者Misael Jaramillo-Rivera

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 16:10:30