如何在sql-server视图中选择1作为位?

dmr*_*dmr 41 sql sql-server-2000

我想创建一个视图,我在其中选择如下内容:

select id, name, 1 as active
from users
Run Code Online (Sandbox Code Playgroud)

但是,我希望我在select语句中创建的活动字段(它在表中不存在)是一个位字段.有没有办法做到这一点?

bob*_*obs 65

您可以使用CONVERT运算符.

SELECT id, name, CONVERT(bit, 1) AS active
FROM users
Run Code Online (Sandbox Code Playgroud)

CAST或CONVERT将起作用.


Dus*_*ine 12

select id, name, CAST(1 AS bit) as active
from users
Run Code Online (Sandbox Code Playgroud)

1是真实位的显示.你想要达到什么目标?

select CAST('true' AS bit) as active
Run Code Online (Sandbox Code Playgroud)

1也回来了.


Guf*_*ffa 6

是的,您将其转换为:

select id, name, cast(1 as bit) as active
from users
Run Code Online (Sandbox Code Playgroud)

在某些情况下,与位值进行比较时,这对于提高性能也很有用:

select id, name
from users
where active = cast(1 as bit)
Run Code Online (Sandbox Code Playgroud)

(在此示例中,这可能没有实际的区别,但是我已经看到了更复杂的查询中的实际区别。)