如何连接SQL Server 2008中的CONTAINS内部的字符串? [英] How do you concatenate strings inside of a CONTAINS in SQL Server 2008?

查看:198
本文介绍了如何连接SQL Server 2008中的CONTAINS内部的字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

SQL Server 2008告诉我它不喜欢CONTAINS中的+。
不知道我在这里做错了什么。

  INSERT INTO dbo.tblImportTitles 

ImportTitleGUID,
UserGUID,
TitleName,
TitleGUID

SELECT
ImportTitleGUID = T.Item.value('@ ImportTitleGUID','uniqueidentifier '),
UserGUID = T.Item.value('@ UserGUID','uniqueidentifier'),
TitleName = T.Item.value('@ TitleName','varchar(255)'),

TitleGUID =
CASE
当(SELECT TOP(2)COUNT(TitleGUID)FROM dbo.tblTitles WHERE CONTAINS(Title,''''+ T.Item.value '@TitleName','varchar(255)')+''''))= 1
THEN(TitleGUID FROM dbo.tblTitles WHERE CONTAINS(Title,''''+ T.Item.value(' @TitleName','varchar(255)')+''''))
ELSE NULL
END

FROM @ ImportTitlesInsertXml.nodes('BatchTitles / BTitle')AS T(物品)

更新



我决定将其转换为标量函数。
使用QUOTENAME(@VARIABLE,'''')来处理代码要容易得多。

解决方案

')+不是你的问题。


SQL Server 2008 is telling me that it doesn't like the "+" in the CONTAINS. Not sure what I'm doing wrong here.

INSERT INTO dbo.tblImportTitles
  (
   ImportTitleGUID,
   UserGUID,
   TitleName,
   TitleGUID
  )
  SELECT
   ImportTitleGUID = T.Item.value('@ImportTitleGUID', 'uniqueidentifier'),
   UserGUID = T.Item.value('@UserGUID', 'uniqueidentifier'),
   TitleName = T.Item.value('@TitleName', 'varchar(255)'),

   TitleGUID = 
   CASE 
    WHEN (SELECT TOP(2) COUNT(TitleGUID) FROM dbo.tblTitles WHERE CONTAINS(Title, '''' + T.Item.value('@TitleName', 'varchar(255)') + '''')) = 1
    THEN (SELECT TitleGUID FROM dbo.tblTitles WHERE CONTAINS(Title,'''' + T.Item.value('@TitleName', 'varchar(255)') + ''''))
    ELSE NULL
   END  

  FROM @ImportTitlesInsertXml.nodes('BatchTitles/BTitle') AS T(Item)

Update

I'v decided to move this to a scalar function. It was a lot easier to handle the code that way.

解决方案

use QUOTENAME(@VARIABLE,'''') the + is not your problem.

这篇关于如何连接SQL Server 2008中的CONTAINS内部的字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆