Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
Tsql Null或空全文谓词_Tsql - Fatal编程技术网

Tsql Null或空全文谓词

Tsql Null或空全文谓词,tsql,Tsql,我在为@keyword变量提供空值时遇到了这个错误。我找到了一个解决方案,将@keyword值设置为'''''。问题是,当该值设置为“'”且运行查询时没有显示任何结果时,它必须显示所有记录。我该怎么做 declare @keyword nvarchar(50) set @keyword='""' SELECT u.Id as AId FROM Users u WHERE FREETEXT((FirstName,Lastname,MiddleName),@keyword) UNION SELE

我在为@keyword变量提供空值时遇到了这个错误。我找到了一个解决方案,将@keyword值设置为'''''。问题是,当该值设置为“'”且运行查询时没有显示任何结果时,它必须显示所有记录。我该怎么做

declare @keyword nvarchar(50)
set @keyword='""'

SELECT u.Id as AId FROM Users u WHERE FREETEXT((FirstName,Lastname,MiddleName),@keyword)
UNION 
SELECT c.AId FROM Certification c WHERE FREETEXT((Certification,School),@keyword)
UNION 
SELECT ad.AId FROM ApplicantDetails ad WHERE FREETEXT((City,Province,StateorRegion),@keyword)
UNION 
SELECT eb.AId FROM EducationalBackground eb WHERE FREETEXT((School,fieldofStudy),@keyword)
UNION 
SELECT ed.AId FROM EmploymentDetails ed WHERE FREETEXT((Position,DescriptionofDuties,CompanyName,City,Province,StateorRegion),@keyword)
UNION 
SELECT e.AId FROM Expertise e WHERE FREETEXT((Expertise),@keyword)
UNION 
SELECT ge.AId FROM GeographicalExperience ge WHERE FREETEXT(([Description]),@keyword)
UNION 
SELECT t.AId FROM Training t WHERE FREETEXT((Training,School),@keyword)
我明白了

    IF ISNULL(@keyword,'') = '' SET @keyword = '""' ;

     SELECT u.Id as AId FROM Users u WHERE @keyword = '""' 
                 OR FREETEXT((FirstName,Lastname,MiddleName),@keyword)
       UNION 
    SELECT c.AId FROM Certification c WHERE @keyword = '""' 
                 OR FREETEXT((Certification,School),@keyword)
       UNION 
    SELECT ad.AId FROM ApplicantDetails ad WHERE @keyword = '""' 
                 OR FREETEXT((City,Province,StateorRegion),@keyword)
       UNION 
    SELECT eb.AId FROM EducationalBackground eb WHERE @keyword = '""' 
                 OR FREETEXT((School,fieldofStudy),@keyword)
       UNION 
    SELECT ed.AId FROM EmploymentDetails ed WHERE @keyword = '""' 
                 OR FREETEXT                                       (Position,DescriptionofDuties,CompanyName,City,Province,StateorRegion),@keyword)
       UNION 
     SELECT e.AId FROM Expertise e WHERE @keyword = '""' 
                 OR FREETEXT((Expertise),@keyword)
       UNION 
   SELECT ge.AId FROM GeographicalExperience ge WHERE @keyword = '""' 
                 OR FREETEXT(([Description]),@keyword)
       UNION 
   SELECT t.AId FROM Training t WHERE @keyword = '""' 
                 OR FREETEXT((Training,School),@keyword)

在我的例子中,我有一个带有回车换行符的空字段,也称为CRLF(回车)。因此,对Null和修剪长度0的测试是不够的。我添加了一个替换CRLF的空格,这样修剪后的长度就不会将其捕捉为0

SELECT @searchString = REPLACE(@searchString, CHAR(13) + CHAR(10), ' ')
IF(@searchString IS NOT NULL AND LEN(LTRIM(RTRIM(@searchString))) > 0)
BEGIN       
  -- do the search
END

一旦解决了如何关闭罚单?你等待,然后在2天后,接受你自己的答案。