从访问数据库转换或一般情况下,创建是/否布尔字段的最佳做法是什么?
我有一个bool的专栏.我怎样才能设置真值假值?这是我的查询:
Update [mydb].[dbo].[myTable]
SET isTrue =
(
CASE WHEN Name = 'Jason' THEN 1
END
)
Run Code Online (Sandbox Code Playgroud)
我不知道在THEN关键字之后要写什么.我应该写1或者真的或1个AS BIT还是其他什么?
我理解SQL使用三个有价值的逻辑,但我在理解如何在实践中使用它时遇到了麻烦,特别是为什么TRUE || NULL = True而FALSE && NULL = False不是评估null.
以下是适用于SQL Server的三个值真值表:

我在网上找到了三个有价值逻辑的解释,但我找不到任何真正的代码示例.有人能告诉我一个使用三值逻辑的代码示例,以帮助我更好地理解这一点吗?
我正在使用 Pandas 0.16 和 sqlalchemy。是否可以仅将数据帧的结构(即列名和数据类型,而不是行)导出到 SQL?
我设法做到的最接近的是仅导出第一行:
df.ix[[0],:].to_sql( tablename, myconnection )
Run Code Online (Sandbox Code Playgroud)
然后我必须做一个截断表。但是,to_csv 和 to_sql 方法之间存在不一致:to_csv 将布尔字段写为字符串 'TRUE' 或 'FALSE' ,而 to_sql 将它们写为 0 或 1。这意味着导入使用 dataframe.to_csv 创建的文件更复杂比应该的。
如果我跑
df.ix[[],:].to_sql( tablename, myconnection )
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为所有列都导出为文本。
表格格式:
+---------+---------+-----------------+
| column1 | column2 | column3| column4|
+---------+---------+-----------------+
| value1 | true | true | false |
| value2 | true | false | true |
| value4 | false | false | false |
+---------+---------+-----------------+
Run Code Online (Sandbox Code Playgroud)
第 1 到 4 列的数据类型为布尔值。
我想检查所有这些布尔列值是否为假或至少一个列值为真。
有没有更好的方法来使用 SQL Server 查询来做到这一点?预期输出:
+---------+---------+-----------------+
| column1 | column2 | column3| column4|
+---------+---------+-----------------+
| value1 | true | true | false | = true
| value2 | true | false | true | = true
| …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个评估为布尔值的T-SQL函数.
我已经阅读了几篇文章,说明BIT是T-SQL等同于BOOLEAN类型(例如,在Microsoft SQL Server中是否存在类似于MySQL的布尔数据类型?,http://social.msdn.microsoft.com/论坛/ en-US/transactsql/thread/c3143a77-c921-40a7-920e-3d5c5f7a269a).
然而,当我创建返回BIT的函数时:
create function dbo.fn_checkLength( @name nvarchar(50), @maxLength int) returns bit
as begin
if len(@name) > @maxLength return cast(0 as bit);
return cast(1 as bit);
end;
GO
Run Code Online (Sandbox Code Playgroud)
它不像一个求值为布尔值的函数,因为以下语句:
create table dbo.test_table (
id int,
name nvarchar(50),
constraint
ck_test_table_maxLength
check (
dbo.fn_checkLength(name, 10)
)
);
GO
Run Code Online (Sandbox Code Playgroud)
给我:
消息4145,级别15,状态1,行10
在预期条件的上下文中指定的非布尔类型的表达式,在')'附近.
为了使它工作,在调用我的函数时,我在混合中添加了一个布尔运算符,以真正使表达式为boolean:
create table dbo.test_table (
id int,
name nvarchar(50),
constraint
ck_test_table_maxLength
check (
dbo.fn_checkLength(name, 10) > 0
)
);
GO
Run Code Online (Sandbox Code Playgroud)
为什么会这样?有没有办法声明可以在T-SQL语句中用作常规布尔表达式的函数?
谢谢!
sql-server ×5
boolean ×2
sql ×2
t-sql ×2
bit ×1
function ×1
pandas ×1
python ×1
sqlalchemy ×1
sqldatatypes ×1