declare @CustField6 nvarchar(10)
declare @sample nvarchar(10)
set @CustField6 = 'sf'
select customer_id from csu_customer_policy
inner join csu_policy on csu_policy.policy_number = csu_customer_policy.policy_number
and csu_policy.data_source = csu_customer_policy.data_source
where csu_policy.vehicle_no like + '''' + @CustField6 + '%''' and csu_customer_policy.delete_status = 0 and csu_customer_policy.site_id = 1
我希望csu_policy.vehicle_no
以sf%
如果我直接给出值sf
而不是@CustField6
它会给出我的所有记录,但是当我使用@CustField6
执行此操作时,它不会给出任何错误但是不会检索任何记录,甚至我打印此代码以检查查询是否正确被框架,并且它正常工作。但我不知道为什么它没有检索任何记录?
答案 0 :(得分:2)
您的语法不正确。它应该是:
where csu_policy.vehicle_no like @CustField6 + '%'
假设@CustField6
等于sf
,这相当于
where csu_policy.vehicle_no like 'sf%'
如果你这样做:
where csu_policy.vehicle_no like '''' + @CustField6 + '%''''
然后你实际上是这样做的:
where csu_policy.vehicle_no like '''sf%'''
换句话说,您正在查找与'sf%'
匹配的记录 - 以引号开头的记录,然后是sf
,然后是任何内容,然后以引号结束。
答案 1 :(得分:1)
答案 2 :(得分:0)
我认为您的查询存在的问题是,在您所处的条件中,您有多个'
和+
:
它应该是where csu_policy.data_source like @custField6 + '%'
而不是csu_policy.vehicle_no like + '''' + @CustField6 + '%'''
declare @CustField6 nvarchar(10)
declare @sample nvarchar(10)
set @CustField6 = 'sf'
select customer_id
from csu_customer_policy
inner join csu_policy on csu_policy.policy_number = csu_customer_policy.policy_number
and csu_policy.data_source = csu_customer_policy.data_source
where csu_policy.vehicle_no like @CustField6 + '%'
and csu_customer_policy.delete_status = 0 and csu_customer_policy.site_id = 1
答案 3 :(得分:0)
尝试摆脱+
from
csu_policy.vehicle_no like + '''' + @CustField6 + '%'''
To
csu_policy.vehicle_no like ''''+ @CustField6 + '%'''
答案 4 :(得分:0)
删除不需要的引号。试试这个。
declare @CustField6 nvarchar(10)
declare @sample nvarchar(10)
set @CustField6 = 'sf'
select customer_id from csu_customer_policy
inner join csu_policy on csu_policy.policy_number = csu_customer_policy.policy_number
and csu_policy.data_source = csu_customer_policy.data_source
where (csu_policy.vehicle_no like + '' + @CustField6 + '%') and
csu_customer_policy.delete_status = 0 and
csu_customer_policy.site_id = 1
答案 5 :(得分:0)
请使用以下单引号:
declare @CustField6 nvarchar(10)
declare @sample nvarchar(10)
set @CustField6 = 'sf'
select customer_id from csu_customer_policy
inner join csu_policy on csu_policy.policy_number = csu_customer_policy.policy_number
and csu_policy.data_source = csu_customer_policy.data_source
where csu_policy.vehicle_no like '' + @CustField6 + '%' and csu_customer_policy.delete_status = 0 and csu_customer_policy.site_id = 1