dpp*_*dpp 69 sql sql-server boolean literals
如何在SQL Server中编写文字布尔值?参见样品使用:
select * from SomeTable where PSEUDO_TRUE
Run Code Online (Sandbox Code Playgroud)
另一个样本:
if PSEUDO_TRUE
begin
select 'Hello, SQL!'
end
Run Code Online (Sandbox Code Playgroud)
注意:上面的查询与我将如何使用它无关.它只是测试文字布尔值.
Dam*_*ver 71
SQL Server没有布尔数据类型.正如@Mikael指出的那样,最接近的是比特.但这是一种数字类型,而不是布尔类型.此外,它仅支持2个值 - 0或1(和一个非值NULL).
SQL(标准SQL,以及T-SQL方言)描述了一个三值逻辑.布尔类型SQL应支持3个值- TRUE,FALSE和UNKNOWN(以及,非值NULL).所以bit这不是一个很好的匹配.
鉴于SQL Server不支持数据类型,我们不应期望能够编写该"类型"的文字.
noc*_*che 37
select * from SomeTable where 1=1
Run Code Online (Sandbox Code Playgroud)
Dal*_*lex 15
根据微软的说法:搜索的语法是
[ WHERE <search_condition> ]*
Run Code Online (Sandbox Code Playgroud)
搜索条件是:
<search_condition> ::=
{ [ NOT ] <predicate> | ( <search_condition> ) }
[ { AND | OR } [ NOT ] { <predicate> | ( <search_condition> ) } ]
[ ,...n ]
Run Code Online (Sandbox Code Playgroud)
而谓词是:
<predicate> ::=
{ expression { = | < > | ! = | > | > = | ! > | < | < = | ! < } expression
Run Code Online (Sandbox Code Playgroud)
如您所见,您始终必须编写两个表达式进行比较.这里搜索条件是 布尔表达式,如1 = 1,a!= b
不要将搜索表达式与"True"或"False"等布尔常量混淆.您可以将布尔常量分配给BIT变量
DECLARE @B BIT
SET @B='True'
Run Code Online (Sandbox Code Playgroud)
但是在TSQL中你不能使用布尔常量而不是像这样的布尔表达式:
SELECT * FROM Somewhere WHERE 'True'
Run Code Online (Sandbox Code Playgroud)
不起作用.
但您可以使用布尔常量来构建双面搜索表达式,如下所示:
SEARCH * FROM Somewhere WHERE 'True'='True'
Run Code Online (Sandbox Code Playgroud)
Sam*_*Sam 15
在任何其他答案中都没有提到这一点.如果你想要一个值,你可以使用orms(should)水合作为布尔值
CONVERT(bit,0) - false CONVERT(bit,1) - true
这给你一点不是布尔值.例如,您不能在if语句中使用该值:
IF CONVERT(bit, 0)
BEGIN
print 'Yay'
END
Run Code Online (Sandbox Code Playgroud)
woudl不解析.你仍然需要写
IF CONVERT(bit, 0) = 0
Run Code Online (Sandbox Code Playgroud)
所以它不是非常有用.
Boh*_*ian 14
大多数数据库都接受这个:
select * from SomeTable where true
Run Code Online (Sandbox Code Playgroud)
如果没有,他们都会接受
select * from SomeTable where 1=1
Run Code Online (Sandbox Code Playgroud)
当手动构建一个sql where子句时,这是一种廉价的方法来避免必须确定你的谓词是否是第一个,在这种情况下它需要一个"WHERE"或后一个,在这种情况下它需要一个"AND".使用上面的内容,一切都在前面"WHERE 1=1"
SQL Server没有文字的true或false值.1=1在极少数情况下,您需要使用该方法(或类似方法).
一种选择是为true和false创建自己的命名变量
DECLARE @TRUE bit
DECLARE @FALSE bit
SET @TRUE = 1
SET @FALSE = 0
select * from SomeTable where @TRUE = @TRUE
Run Code Online (Sandbox Code Playgroud)
但这些只存在于批处理范围内(您必须在要使用它们的每个批处理中重新声明它们)
您可以使用值'TRUE'和'FALSE'。从https://docs.microsoft.com/zh-cn/sql/t-sql/data-types/bit-transact-sql:
可以将字符串值TRUE和FALSE转换为位值:将TRUE转换为1,将FALSE转换为0。
| 归档时间: |
|
| 查看次数: |
165872 次 |
| 最近记录: |