如何连接SQL Server 2008中的CONTAINS内部的字符串? [英] How do you concatenate strings inside of a CONTAINS in SQL Server 2008?
本文介绍了如何连接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屋!
查看全文