类似sql server中的运算符问题
我想要所有有类似sql server中的运算符问题,sql,sql-server,sql-like,Sql,Sql Server,Sql Like,我想要所有有csu\u政策的记录。车辆号以sf% 如果我直接给出值sf而不是@CustField6,它会给出我的所有记录,但当我使用@CustField6执行此操作时,它不会给出任何错误,但不会检索任何记录,即使我打印了此代码以检查查询是否被正确框接,并且工作正常。但我不知道为什么它没有检索任何记录 您的语法不正确。应该是: declare @CustField6 nvarchar(10) declare @sample nvarchar(10) set @CustField6 = 'sf'
csu\u政策的记录。车辆号
以sf%
如果我直接给出值
sf
而不是@CustField6
,它会给出我的所有记录,但当我使用@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
假设@CustField6
等于sf
,这相当于
where csu_policy.vehicle_no like @CustField6 + '%'
如果您这样做:
where csu_policy.vehicle_no like 'sf%'
那么你实际上是这样做的:
where csu_policy.vehicle_no like '''' + @CustField6 + '%''''
换句话说,您正在查找与
'sf%'
匹配的记录-以引号开头的记录,然后是sf
,然后是任何内容,然后以引号结尾的记录。您的语法不正确。应该是:
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
假设@CustField6
等于sf
,这相当于
where csu_policy.vehicle_no like @CustField6 + '%'
如果您这样做:
where csu_policy.vehicle_no like 'sf%'
那么你实际上是这样做的:
where csu_policy.vehicle_no like '''' + @CustField6 + '%''''
换句话说,您正在查找与
'sf%'
匹配的记录-以引号开头的记录,然后是sf
,然后是任何内容,然后以引号结尾的记录。我认为您的查询的问题在于,您的where条件中存在少数对多的'
和+
:
它应该是其中csu_policy.data_source like@custField6+'%'
而不是csu_policy.vehicle_no like++@custField6+'%'''''
我认为您的查询的问题在于,您的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
试着摆脱+
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
将您的标准更改为:
from
csu_policy.vehicle_no like + '''' + @CustField6 + '%'''
To
csu_policy.vehicle_no like ''''+ @CustField6 + '%'''
演示:将标准更改为:
from
csu_policy.vehicle_no like + '''' + @CustField6 + '%'''
To
csu_policy.vehicle_no like ''''+ @CustField6 + '%'''
演示:删除不需要的引号。。试试这个
WHERE csu_policy.vehicle_no LIKE @CustField6 + '%'
删除不需要的引号。。试试这个
WHERE 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
请按照以下要求使用单一报价:
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
当我们为like指定值时,它应该在单引号中,对吗?这就是它被框成这样的原因,如果我告诉你,它正在检索车辆号为“sjrt45',“sghfg78”alsoif@CustField6等于
sf
,则上述值等同于如“sf%”
。这就是您想要的结果吗?当我们为like指定值时,它应该在单引号中,对吗?这就是它被框成这样的原因,如果我告诉你,它正在检索车辆号为“sjrt45',“sghfg78”alsoif@CustField6等于sf
,则上述值等同于如“sf%”
。这就是您想要的结果吗?当我们为like指定值时,它应该在单引号中,对吗?这就是它被框成这样的原因,如果我告诉你,它正在检索车辆号为“sjrt45','sghfg78'另外,@CustField6+'%”唯一要做的事情是创建一个从'sf'+'%'连接起来的字符串,因此结果将被解释为'sf%'。使用SQL中的引号是因为like运算符需要字符串形式的输入。当我们为like指定值时,它应该在单引号中,对吗?这就是它被框成这样的原因,如果我告诉你,它正在检索车辆号为“sjrt45','sghfg78'另外,@CustField6+'%”所做的唯一事情是创建一个从'sf'+'%'连接起来的字符串,因此结果将被解释为'sf%'。使用SQL中的引号是因为like运算符需要字符串形式的输入。