能否在语句、表或数据库级配置LIKE运算符的ESCAPE字符,还是仅单LIKE设置?
LIKE运算符ESCAPE字符的设置级别问题
大部分主流关系型数据库不支持在数据库、表或整个SQL语句级别全局指定ESCAPE字符,只能为每个单独的LIKE操作显式指定。
以下是几个常见数据库的具体情况:
- MySQL:无全局配置ESCAPE字符的参数,默认转义符为反斜杠,但如果需要自定义转义符,必须在每个LIKE子句后通过
ESCAPE关键字指定,示例:SELECT * FROM products WHERE product_name LIKE '%\_%' ESCAPE '\'; - PostgreSQL:默认没有预设转义符,所有自定义转义逻辑都需要在单个LIKE操作中通过
ESCAPE声明,示例:SELECT * FROM customers WHERE email LIKE '%#_%' ESCAPE '#'; - SQL Server:同样仅支持在单个LIKE语句内指定ESCAPE字符,示例:
SELECT * FROM orders WHERE order_number LIKE '%!_%' ESCAPE '!';
总结:目前没有主流数据库提供数据库、表或语句级别的全局ESCAPE字符设置,必须针对每个LIKE操作单独定义转义规则。
内容的提问来源于stack exchange,提问作者LiamF
相关产品推荐
相关产品推荐

