我有一个SQL查询,如:
(u.user_contact_no LIKE " + "%" + ContactNo + "%" + " or u.user_contact_no IS NULL" + " or u.user_contact_no = " + ")
它返回,
(u.user_contact_no %9876543210% or u.user_contact_no IS NULL or u.user_contact_no = )
但期待像,
(u.user_contact_no LIKE "%9876543210%" or u.user_contact_no IS NULL or u.user_contact_no = "")
请告诉我,如何重写我的查询?
答案 0 :(得分:3)
ANSI / ISQ SQL标准指定对标识符使用双引号。例如,当表名包含空格字符时:"名字"。或者,当保留字用作标识符时,例如列名" DAY"。
单引号用于文字,例如'马特'
select "Last Name"
from "some odd table"
where "First name" = 'Matt'
答案 1 :(得分:1)
假设您正在查询SQL Server: 您需要使用单引号字符并转义要包含在您似乎正在构建的查询字符串中的单引号。
declare @ContactNo varchar(10) = '9876543210'
declare @sql varchar(max) = 'select... from... where... and (u.user_contact_no LIKE ''%' + @ContactNo + '%'' or ISNULL(u.user_contact_no,'''') = '''')'
select @sql
返回
select... from... where... and (u.user_contact_no LIKE '%9876543210%' or ISNULL(u.user_contact_no,'') = '')
所以要在SQL字符串中创建一个空字符串文字,你需要转义两个单引号,这样你最终得到四个单引号字符。
答案 2 :(得分:0)
应该是这样的
(u.user_contact_no LIKE + "'%" + ContactNo + "%'" + or u.user_contact_no IS NULL")
答案 3 :(得分:0)
您缺少单引号
(u.user_contact_no LIKe "' + "%" + ContactNo + "%" + '" or u.user_contact_no IS NULL")
答案 4 :(得分:0)
尝试
(u.user_contact_no LIKe '" + "%" + ContactNo + "%" + "' or u.user_contact_no IS NULL")