Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类似sql server中的运算符问题_Sql_Sql Server_Sql Like - Fatal编程技术网

类似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运算符需要字符串形式的输入。