使用 ?在 sql create '' around 参数

Posted

技术标签:

【中文标题】使用 ?在 sql create \'\' around 参数【英文标题】:Using ? in sql create '' around parameter使用 ?在 sql create '' around 参数 【发布时间】:2021-08-26 15:22:27 【问题描述】:

我尝试创建这样的查询:

SELECT * FROM table_name WHERE column_name LIKE %?%

错误:

错误:ER_PARSE_ERROR:您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的“%'word'%' 附近使用正确的语法

如何避免两个撇号?

这行得通:

SELECT * FROM table_name WHERE column_name LIKE ?

但我需要完全匹配。

【问题讨论】:

您需要在模式周围加上单引号。 【参考方案1】:

我怀疑你想要:

WHERE column_name LIKE CONCAT('%', ?, '%')

但是,我建议您在应用程序中附加通配符并简单地使用:

WHERE column_name LIKE ?

【讨论】:

感谢您的回答,@gordon。康卡特工作正常。您能否详细说明在应用程序中附加通配符的含义? @Nothere 。 . .在发送参数的代码中,将'%'放在参数的开头和结尾。 哈!这很聪明,@gordon。与 concat 相比有什么优势?只是速度? @Nothere 。 . .它简化了查询逻辑。但我对此没有强烈的意见。

以上是关于使用 ?在 sql create '' around 参数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Server 中使用 Create 语句创建临时表?

如何在使用 DBMS_SCHEDULER.CREATE_JOB 创建的作业中运行复杂的 PL/SQL 代码

Oracle CREATE TYPE 和 PL/SQL

SQL CREATE LOGON - 不能使用@parameter 作为用户名

如何在 Transact-SQL 的一个脚本中在 CREATE DATABASE DBName 之后使用 USE DBName?

SQL Synapse,在 CREATE EXTERNAL TABLE 中使用动态/参数化 Azure 容器