列の内容に基づいてT-SQLでブール値を出力する方法は?
-
03-07-2019 - |
質問
さまざまなテーブルの列を抽象化し、それらを事前にフィルターおよび事前に並べ替えるビューを作成しました。そのコンテンツが気にならない列が1つありますが、コンテンツがnullかどうかを知る必要があります。したがって、私のビューではエイリアスを" true "として渡す必要があります。この指定された列の値が nullではないおよび" false "の場合値が null の場合。
T-SQLでこのようなブール値を選択するにはどうすればよいですか
解決
これには CASE ステートメントを使用する必要があります:
SELECT CASE WHEN columnName IS NULL THEN 'false' ELSE 'true' END FROM tableName;
他のヒント
または次のようにできます:
SELECT RealColumn, CAST(0 AS bit) AS FakeBitColumn FROM tblTable
ブール値としての出力が必要な場合
CAST(CASE WHEN colName IS NULL THEN 0 ELSE 1 END as BIT) aIsBooked
ビューの列には、次のようなものを使用できます
CASE WHEN ColumnName is not null THEN 'True' ELSE 'False' END
またはステートメント内
SELECT
s.ID,
s.[Name],
CASE WHEN s.AchievedDate is not null THEN 'True' ELSE 'False' END [IsAchieved]
FROM Schools s
またはその後のさらなる処理のために、私は個人的に使用します
SELECT
s.ID,
s.[Name],
CASE WHEN s.AchievedDate is not null THEN 1 ELSE 0 END [IsAchieved]
FROM Schools s
同様の問題があり、実際の列がnullであるかどうかに基づいてブール列型を返すビューが必要でした。次のようなユーザー定義関数を作成しました:
CREATE FUNCTION IsDatePopulated(@DateColumn as datetime)
RETURNS bit
AS
BEGIN
DECLARE @ReturnBit bit;
SELECT @ReturnBit =
CASE WHEN @DateColumn IS NULL
THEN 0
ELSE 1
END
RETURN @ReturnBit
END
作成したビューは、整数ではなくビット列を返します。
CREATE VIEW testView
AS
SELECT dbo.IsDatePopulated(DateDeleted) as [IsDeleted]
FROM Company
t-sqlでビットと呼ばれるブール値を要求しました。
他の回答では、varcharに「true」と「false」または1と0が与えられています。「true」と「false」は明らかにブールではなく、varcharです。 1と0は整数としてキャストされると思いますが、確かに少しではありません。これは一見不自然に思えるかもしれませんが、型は非常に頻繁に問題になります。
実際のビット値を取得するには、出力を次のように明示的にキャストする必要があります。
select case when tableName.columnName IS NULL then cast(0 as bit) else cast(1
as bit) END as ColumnLabel from tableName
所属していません StackOverflow