سؤال

أنا باستخدام SQL Server 2005.لدي جدول مع عمود نص و لدي العديد من الصفوف في الجدول حيث قيمة هذا العمود ليس null, لكنها فارغة.في محاولة لمقارنة ضد " ينتج هذا الرد:

أنواع البيانات النص varchar تتعارض في لا يساوي المشغل.

هل هناك وظيفة خاصة لتحديد ما إذا كانت قيمة النص عمود ليست فارغة ولكن فارغة ؟

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

المحلول

where datalength(mytextfield)=0

نصائح أخرى

ISNULL(
case textcolum1
    WHEN '' THEN NULL
    ELSE textcolum1
END 
,textcolum2) textcolum1

في الواقع, يجب عليك فقط استخدام عامل التشغيل LIKE.

SELECT * FROM mytable WHERE mytextfield LIKE ''

فقط للحصول على القيم الفارغة (وليس القيم null):

SELECT * FROM myTable WHERE myColumn = ''

للحصول على كل باطل و القيم الفارغة:

SELECT * FROM myTable WHERE myColumn IS NULL OR myColumn = ''

فقط للحصول على قيم فارغة:

SELECT * FROM myTable WHERE myColumn IS NULL

للحصول على قيم أخرى غير فارغة فارغة:

SELECT * FROM myTable WHERE myColumn <> ''


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

أعرف أن هذا المنصب هو القديم ولكن وجدت أنه من المفيد.

لم تحل مشكلتي العودة السجل مع عدم فارغ حقل النص حتى ظننت أنني سوف تضيف الحل.

هذا هو where التي عملت بالنسبة لي.

WHERE xyz LIKE CAST('% %' as text)

استخدام DATALENGTH طريقة, على سبيل المثال:

SELECT length = DATALENGTH(myField)
FROM myTABLE

وأود أن اختبار ضد فرعية(textColumn, 0, 1)

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

أردت أن يكون محدد مسبقا النص("لا مختبرات المتاحة") ليتم عرضها إذا كانت القيمة فارغة أو فارغة و صديقي ساعدني في هذا الأمر:

StrengthInfo = CASE WHEN ((SELECT COUNT(UnitsOrdered) FROM [Data_Sub_orders].[dbo].[Snappy_Orders_Sub] WHERE IdPatient = @PatientId and IdDrugService = 226)> 0)
                            THEN cast((S.UnitsOrdered) as varchar(50))
                    ELSE 'No Labs Available'
                    END

عليك أن تفعل على حد سواء:

SELECT * FROM Table WHERE Text IS NULL or Text LIKE ''

استخدام NULL المشغل:

Select * from tb_Employee where ename is null

أعرف أن هناك الكثير من الإجابات مع بدائل لهذه المشكلة ، ولكن أود فقط أن تضع معا ما وجدت أفضل حل @إريك Z اللحية & @تيم كوبر مع @إنريكي غارسيا & @فرات كوهلر.

إذا لزم الأمر للتعامل مع حقيقة أن الفضاء فقط يمكن أن يكون نفس فارغة في استخدام سيناريو لأن الاستعلام أدناه سيعود 1 ، 0 لا.

SELECT datalength(' ')

ولذلك فإنني سوف يذهب شيء من هذا القبيل:

SELECT datalength(RTRIM(LTRIM(ISNULL([TextColumn], ''))))
SELECT * FROM TABLE
WHERE ISNULL(FIELD, '')=''

جرب هذا:

select * from mytable where convert(varchar, mycolumn) = ''

آمل أن يساعدنا!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top