سؤال

ولدي عمود التاريخ والوقت قيم الفارغة في بلدي الجدول SQL خادم 2005 دعا DateTimeDeleted.

وأود أن يكون لها نوع BIT عمود محسوب التي هي 1 إذا DateTimeDeleted ليس لاغية، وإلا 0. ومع ذلك، وأنا لا يمكن أن يبدو للحصول على بناء جملة صيغة صحيحة.

ولقد حاولت:

(TsDeleted IS NULL) = 0

ولكن من يعطيني خطأ في بناء الجملة.

ومساعدة! :)

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

المحلول

Alter Table MyTableName 
  Add IsDeleted As 
     (Case When [DateTimeDeleted] Is Null 
       Then (0) Else (1) End)

وهذا سوف يظهر كعدد ... إذا كنت تريد حقا أن يكون قليلا، ثم:

Alter Table MyTableName 
  Add IsDeleted As 
     cast( (Case When [DateTimeDeleted] Is Null 
       Then (0) Else (1) End) as Bit)

نصائح أخرى

وأعتقد أن هذا يجب أن تعمل:

update table
set IsDeleted = case when DateTimeDeleted is null then 0 else 1 end

وهذا سيعمل، في الأساس هو الحال فجوة في حد ذاته إذا لم يكن لاغيا ومن ثم تقسيم 0 من 1 اذا كان خالي

CONVERT(INT,IsNULL(DateTimeDeleted,0))/CONVERT(INT,IsNULL(DateTimeDeleted,1))
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top