كيفية إخراج منطقية في T-SQL استنادا إلى محتوى عمود ؟

StackOverflow https://stackoverflow.com/questions/157114

  •  03-07-2019
  •  | 
  •  

سؤال

أنا قدمت وجهة نظر مجردة أعمدة جداول مختلفة و ما قبل التصفية ما قبل فرزها.هناك عمود واحد مضمونها أنا لا أهتم ولكن أريد أن أعرف ما إذا كان المحتوى هو باطل أو لا.لذلك من وجهة نظري يجب أن يمر اسم مستعار باسم "صحيح"في حالة قيمة هذا العمود المحدد ليست فارغة و "كاذبة"في حالة قيمة باطل.

كيف يمكن تحديد هذه منطقية مع T-SQL ؟

هل كانت مفيدة؟

المحلول

لديك لاستخدام الحالة بيان هذا:

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

لدي مشكلة مشابهة حيث أردت عرض للعودة منطقية نوع العمود على أساس إذا الفعلي عمود فارغة أم لا.أنا إنشاء دالة معرفة من قبل المستخدم مثل ذلك:

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.'صحيح' و '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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top