কোনও এসকিউএল সার্ভারের পাঠ্য কলামটি খালি আছে কিনা তা আমি কীভাবে পরীক্ষা করব?


183

আমি এসকিউএল সার্ভার 2005 ব্যবহার করছি I আমার কাছে একটি পাঠ্য কলাম সহ একটি টেবিল রয়েছে এবং আমার সারণীতে অনেকগুলি সারি রয়েছে যেখানে এই কলামটির মান নাল নয়, তবে এটি খালি। '' এর সাথে তুলনা করার চেষ্টা করলে এই প্রতিক্রিয়া পাওয়া যায়:

ডেটা প্রকারের পাঠ্য এবং বারচর অপারেটরের সমান নয় omp

কোনও পাঠ্য কলামের মান নাল নয় তবে খালি নয় তা নির্ধারণ করার জন্য কোনও বিশেষ কার্য রয়েছে?


1
আমি যদি সম্ভব হয়ে থাকে তথ্যের ধরণটিকে ভার্চারে (সর্বোচ্চ) রূপান্তরিত করবো, পাঠ্যকে অবমূল্যায়ন করা হয়েছে - আপনি যদি টেবিলের স্পর্শ করে থাকেন তবে এখনই পরিবর্তনগুলি শুরু করা ভাল। অবশ্যই আপনার ডিবিএ সঙ্গে পরীক্ষা করুন। তবে রূপান্তরিত হওয়ার আগে আরও বেশি জিনিস রূপান্তরিত হতে পারে তা আমার চিন্তাভাবনা। এটি নির্ভর করে যে আপনি কী কোড ব্যবহার করছেন তাতে কী কী কোড রয়েছে এবং পাঠ্য লিখুন যা এখন এটি করবেন কিনা তা ভেঙে দেওয়া হবে তার উপর নির্ভর করবে, তবে আমি এটিকে সামনে এনেছি, তাই আপনি অবগত আছেন যে অবশেষে এটি পরিবর্তন করা দরকার।
এইচএলজিইএম

উত্তর:


304
where datalength(mytextfield)=0

2
এটি আসল প্রশ্ন ছিল না, তবে কেবল শিরোনামটি পড়ে এমন লোকদের জন্য কেবল একটি মন্তব্য, OR mytextfield IS NULLআপনার কলাম কখন হতে পারে তা যুক্ত করতে ভুলবেন নাNULL
দান

2
mytextfield IS NULL *OR*:-)
-

3
@ নিষিদ্ধ জিওঞ্জিনিয়ারিং এসকিউএল সার্ভার টি-এসকিউএল শর্ট সার্কিট মূল্যায়ন কৌশলকে সম্মান করে না, সুতরাং এখানে অর্ডার ফলাফলের উপর প্রভাব ফেলবে না।
কনরাড

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

উপরের ক্যোয়ারীটি আসলে কোনও পাঠ্য কলামের শূন্যতা এবং শূন্যতার প্রকৃতি পরিচালনা করবে এবং তদনুসারে শর্তের ভিত্তিতে মান নির্ধারণ করবে। উত্তরের জন্য উত্তোলন করুন যেহেতু এটি আমি যা খুঁজছিলাম। ধন্যবাদ
ব্যবহারকারী_ভি

28

আসলে, আপনাকে কেবল লাইক অপারেটরটি ব্যবহার করতে হবে।

SELECT * FROM mytable WHERE mytextfield LIKE ''

+1 আমি এই উত্তরটি এখানে অন্যদের তুলনায় পছন্দ করি কারণ এটি ডাটা লেন্থ (), ইসনুল (), বা কাস্ট () এর মতো এসকিউএল ফাংশনগুলিকে কল করার অতিরিক্ত ওভারহেডের উপর নির্ভর করে না। সম্ভবত উত্পন্ন উত্পন্ন ক্যোয়ারী পরিকল্পনা একই (আমি পরীক্ষা করিনি); এখনও আমি এই একটি হতে খুঁজে পর্যন্ত ক্লিনার পদ্ধতির।
মাইকটাইভি

5

কেবল খালি মান (এবং নাল মান নয়) পেতে:

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 <> ''


এবং মনে রাখবেন কেবল প্রয়োজনীয় হলে বাক্যাংশগুলি ব্যবহার করুন কারণ তারা অন্যান্য ধরণের অনুসন্ধানের তুলনায় কর্মক্ষমতা হ্রাস করবে।


মানে না myColumn IS NOT NULL AND my column = '';?
বিসিএসবি 1001

2

IS নাল অপারেটরটি ব্যবহার করুন:

Select * from tb_Employee where ename is null

1
আতৌমি প্রশ্নে বলেছেন যে "" এই কলামটির মান নকল নয়, তবে এটি খালি "সুতরাং ISNULL () কাজ করবে না :)
GazB

2
SELECT * FROM TABLE
WHERE ISNULL(FIELD, '')=''

1
upvated, but ... যেখানে ISNULL (TRIM (Field), '') = '' আরও ভাল ;-), যদি আপনি মনে করেন যে "" ভিতরে ফাঁকা থাকা শূন্য স্ট্রিং
কার্স্টেন

মাইএসকিউএল-র জন্য সঠিক বাক্য গঠনটি হ'ল:SQL SELECT * FROM TABLE WHERE IFNULL(FIELD, '')=''
ক্লদিদিও সিলভা

1

আমি জানি এই পোস্টটি প্রাচীন তবে, আমি এটি দরকারী বলে মনে করি।

এটি খালি খালি পাঠ্য ক্ষেত্রের সাথে রেকর্ডটি ফিরিয়ে দেওয়ার বিষয়ে আমার সমস্যার সমাধান করেনি তাই আমি ভেবেছিলাম যে আমি আমার সমাধান যুক্ত করব।

এটিই যেখানে আমার পক্ষে কাজ করেছে সেই ধারাটি।

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



0

নাল এবং একটি খালি স্ট্রিং সমান? যদি সেগুলি হয় তবে আমি ফিল্ডটিকে নাল বা '' করতে বাধ্য করতে আমার অ্যাপ্লিকেশনটিতে (বা অ্যাপ্লিকেশনটি "অফ-অফ-বক্স"?) হতে পারে তবে যুক্তিতে যুক্ত করব would তবে অন্যটি নয়। আপনি যদি '' এর সাথে যান, তবে আপনি কলামটিও নালকে না সেট করতে পারেন। কেবল একটি তথ্য-পরিচ্ছন্নতার জিনিস।


0

মানটি শূন্য বা ফাঁকা থাকলে আমার বন্ধু একটি পূর্বনির্ধারিত পাঠ্য ("কোনও ল্যাব উপলব্ধ নয়") প্রদর্শন করতে চেয়েছিল এবং আমার বন্ধু আমাকে এতে সহায়তা করেছিল:

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

বাহ, একটি subquery। এটি মোটেই ব্যয়বহুল নয়।
জে ক্রোগান

0

আপনাকে উভয়ই করতে হবে:

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


0

আমি জানি যে এই সমস্যার বিকল্পগুলির সাথে প্রচুর উত্তর রয়েছে তবে আমি @ এরিক জেড বিয়ার্ড এবং @ এন্টারিক গার্সিয়া এবং @ উলি কোহলারের সাথে @ এরিক জেড বিয়ার্ড এবং @ টিম কুপার দ্বারা যে সমাধানটি পেয়েছি তার সেরা সমাধানটি আমি একসাথে রাখতে চাই।

আপনার ব্যবহারের ক্ষেত্রে দৃশ্যে কেবল ফাঁকা স্থানই একই হতে পারে এই বিষয়টি নিয়ে যদি ডিল করার প্রয়োজন হয় তবে নীচের ক্যোয়ারীটি 0 নয়, 1 টি ফিরে আসবে।

SELECT datalength(' ')

অতএব, আমি এই জাতীয় কিছু যাব:

SELECT datalength(RTRIM(LTRIM(ISNULL([TextColumn], ''))))


0

পরিবর্তে ব্যবহার করুন isnullব্যবহার করুন case, কারণ পারফরম্যান্সের কারণে এটি ভাল।

case when campo is null then '' else campo end

আপনার ইস্যুতে আপনার এটি করা দরকার:

case when campo is null then '' else
  case when len(campo) = 0 then '' else campo en
end

এর মতো কোড:

create table #tabla(
id int,
campo varchar(10)
)

insert into #tabla
values(1,null)

insert into #tabla
values(2,'')

insert into #tabla
values(3,null)

insert into #tabla
values(4,'dato4')

insert into #tabla
values(5,'dato5')

select id, case when campo is null then 'DATA NULL' else
  case when len(campo) = 0 then 'DATA EMPTY' else campo end
end
from #tabla

drop table #tabla

আপনি প্রথমে নাল কিনা তা পরীক্ষা করে দেখুন, তারপরে আপনি লেন ফাংশনটি ব্যবহার করেন ... আমি আশা করি এটি সাহায্য করে
এনরিক গার্সিয়া

যদি কলামটি কোনও পাঠ্য না রেখে শূন্য এবং খালি নয়?
সৈয়দ মুহাম্মদ ইদ্রিস

0
DECLARE @temp as nvarchar(20)

SET @temp = NULL
--SET @temp = ''
--SET @temp = 'Test'

SELECT IIF(ISNULL(@temp,'')='','[Empty]',@temp)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.