带反引号的SQL标识符能否包含反引号?主流数据库转义问询
在MySQL、BigQuery等支持反引号的数据库里,怎么转义标识符里的反引号?
先说结论:这类用反引号(`)包裹标识符的数据库,完全允许标识符里包含字面反引号,但不能用反斜杠转义,得遵循特定规则:
MySQL的转义方法
在MySQL里,要在反引号包裹的标识符里加字面反引号,直接写两个连续的反引号就行。比如你想把列别名设成select`,正确写法是:
select 1 as `sel``ect`
执行后,列的别名就是带单个反引号的select`。
BigQuery的转义方法
BigQuery的规则和MySQL一模一样,也是用双反引号转义单个反引号。示例语句:
select 1 as `sel``ect`
运行后就能得到包含字面反引号的标识符。
避坑提醒
- 别用反斜杠(\)转义,像你尝试的
select 1 assel`ect``这种写法肯定报错,这类数据库不认反斜杠当标识符的转义符。 - 只要按双反引号的规则来,标识符里想加多少个字面反引号都没问题。
内容的提问来源于stack exchange,提问作者samuelbrody1249
相关产品推荐
相关产品推荐

