سؤال

أحاول إجراء عملية بت ليس في SQL Server.أود أن أفعل شيئًا كهذا:

update foo
set Sync = NOT @IsNew

ملحوظة:بدأت بكتابة هذا واكتشفت الإجابة على سؤالي قبل أن أنتهي.ما زلت أرغب في المشاركة مع المجتمع، نظرًا لأن هذه الوثيقة كانت غير موجودة في MSDN (حتى أضفتها إلى محتوى المجتمع هناك أيضًا).

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

المحلول

ونعم، سوف المشغل ~ العمل.

update foo
set Sync = ~@IsNew

نصائح أخرى

لا:~

على مستوى البت و:&

Bitwise أو:|

XOR بالبت:^

وتفتقر في MSDN؟ http://msdn.microsoft.com/en-us /library/ms173468(SQL.90).aspx

<اقتباس فقرة>   

~: يؤدي أحادي المعامل المنطقي NOT العملية على قيمة عددية.   و~ المشغل أحادي المعامل بإجراء أحادي المعامل المنطقي NOT للتعبير، مع كل بت بدوره. إذا تعبير يحتوي على قيمة 0، يتم تعيين بت في مجموعة النتائج إلى 1؛ خلاف ذلك، يتم مسح قليلا في النتيجة إلى قيمة 0. وبعبارة أخرى، يتم تغيير تلك إلى أصفار ويتم تغيير الأصفار إلى تلك.

لأغراض اكتمال:

SELECT b, 1 - b
FROM
  (SELECT cast(1 AS BIT) AS b
   UNION ALL
   SELECT cast(0 AS BIT) AS b) sampletable
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top