在sql server R2中将nvarchar(max)转换为boolean

时间:2014-04-07 06:33:07

标签: sql sql-server sql-server-2008-r2

如何在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但我无法找到解决方案

2 个答案:

答案 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