Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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
如何在sql查询中对位文本进行编码_Sql_Sql Server - Fatal编程技术网

如何在sql查询中对位文本进行编码

如何在sql查询中对位文本进行编码,sql,sql-server,Sql,Sql Server,我有一个可以合并多个表的视图。一个表有一个名为VisibleToCustomer的bit列。其他一个表没有这个,我想在视图中硬编码它。我可以使用字符串执行此操作:- SELECT 'Fred' "VisibleToCustomer", .... 甚至是ints SELECT 1 "VisibleToCustomer", .... 但是我怎么用一点呢?也就是说,我想做一些 SELECT true "VisibleToCustomer", .... 但显然,上述方法不起作用 位文字的三个

我有一个可以合并多个表的视图。一个表有一个名为VisibleToCustomer的bit列。其他一个表没有这个,我想在视图中硬编码它。我可以使用字符串执行此操作:-

SELECT  'Fred' "VisibleToCustomer", ....
甚至是ints

SELECT  1 "VisibleToCustomer", ....
但是我怎么用一点呢?也就是说,我想做一些

SELECT  true "VisibleToCustomer", ....

但显然,上述方法不起作用

位文字的三个可能值:
选择强制转换(1为位)、强制转换(0为位)、强制转换(空为位)

注:当转换为位时,任何非零值将变为
1
cast(-1.2e-33作为位)
。我建议不要那样写一些文字。

您可以使用

 SELECT  'true' AS "VisibleToCustomer"
位的值大于varchar,因此这将正确地强制转换

SELECT CAST(1 AS BIT) AS "VisibleToCustomer"
UNION ALL
SELECT 'false' 
返回

+-------------------+
| VisibleToCustomer |
+-------------------+
|                 1 |
|                 0 |
+-------------------+

还有
CAST('true'作为比特),CAST('false'作为比特)
@MartinSmith,我不知道。谢谢。谢谢你的快速回复,用了马丁斯,但你的也很好!还有数字字符串文字,以及+和-,它们都是零:CAST('1'作为位)、CAST('0000'作为位)、CAST('-'作为位)、CAST('+'作为位)。非常感谢您如此快速和全面的回复,非常好!