如何在SQL Server R2中将nvarchar(MAX)
转换为BOOLEAN
。我试过这个
Declare @WhereClause nvarchar(max) = 'CityID=1 and CategoryID in(select CategoryID form Category where ParentCategoryID=3';
select CONVERT(bit, @WhereClause) as Test
SQL抛出这样的错误
Msg 245, Level 16, State 1, Line 3
Conversion failed when converting the varchar value 'CityID=1 and CategoryID in(select CategoryID form Category where ParentCategoryID=3' to data type bit.
我想在sql查询中的where子句中使用@WhereClause
。
我有go through this但我无法找到解决方案
答案 0 :(得分:1)
你必须做这样的事我的朋友:
DECLARE @CityID AS SMALLINT
DECLARE @ParentCategoryID AS SMALLINT
Declare @WhereClause nvarchar(max)
DECLARE @SQLQuery AS NVARCHAR(max)
SET @CityID = 1
SET @ParentCategoryID = 3
SET @WhereClause = 'CityID = ' + CAST(@CityID AS NVARCHAR(10)) +
' and CategoryID in(select CategoryID form Category where ParentCategoryID = '
+CAST(@ParentCategoryID AS NVARCHAR(10)) +')'
SET @SQLQuery = 'SELECT * FROM YourTable WHERE ' + @WhereClause
EXECUTE(@SQLQuery)
此处是 SQL Fiddle 样本。
答案 1 :(得分:1)
我真的不明白你为什么要把它转换成位数据类型。 但是,您将无法在SQL Server中执行此操作: http://technet.microsoft.com/en-us/library/ms177603.aspx
您可以使用TRUE或FALSE,它们分别转换为1和0,但不能与其他任何东西一起使用。
Declare @WhereClause nvarchar(max) = 'TRUE'
select convert( bit, @WhereClause) as Test
返回1