এসকিউএল সার্ভার ইসনুল ক্ষেত্রটি শূন্য হলে 1900-01-01 এ ফিরে আসছেন


15

নিম্নলিখিত কোডের টুকরাটি 1900-01-01 এ ফিরে আসবে যখন ডিওবি ক্ষেত্রটি শূন্য থাকে। আমি চেয়েছিলাম (এবং প্রত্যাশিত) এটি একটি খালি স্ট্রিং ('') ফিরিয়ে দেবে তবে তা নয়। আমি আমার পছন্দসই ফলাফল পেতে কীভাবে এগিয়ে যেতে পারি?

isnull(convert(date,DOB,1),'')

5
আপনি ডেটা টাইপগুলি খুব বেশি মিশ্রিত করছেন। মূলত আপনি NULLখেজুর দিয়ে যা করছেন তা বলছে SELECT CAST('' AS DATE)। ডেটা টাইপ কি DOB?
মার্ক সিনিংসন

1
এটি ভের্চার ডেটা টাইপ যা আমি তারিখে রূপান্তর করছি
হুয়ান ভেলিজ

5
আমি জানি এটি একটি পুরানো পোস্ট তবে এটি উল্লেখ করার মতো যে এটি প্রদর্শিত হয় যেন আপনি অ্যাপ্লিকেশন স্তরটি আপনার জন্য না করে পরিবর্তিতভাবে এসকিউএল-তে ডেটা ফর্ম্যাট করার চেষ্টা করছেন। আপনি যখন অ্যাপ্লিকেশন স্তরটি ফর্ম্যাট করতে দেন তবে 99.9% সময় আপনি ভাল।
এরিক

উত্তর:


21

আপনি একটি খালি স্ট্রিং পাবেন না কারণ আপনি যে জাতীয় DATEমান থেকে ফিরে আসছেন ISNULL

প্রতি এমএসডিএন ,ISNULL

চেক_এক্সপ্রেশন হিসাবে একই ধরণের প্রত্যাবর্তন করে। যদি আক্ষরিক NULL টি চেক_প্রকাশ হিসাবে সরবরাহ করা হয় তবে প্রতিস্থাপন_মূল্যের ডেটাটাইপ প্রদান করে। যদি আক্ষরিক NULL যদি চেক_প্রকাশ হিসাবে সরবরাহ করা হয় এবং কোনও প্রতিস্থাপন_মূল্য সরবরাহ না করা হয় তবে একটি পূর্বাবস্থায় ফিরে আসে।

আপনি যদি মানটি কিনা তা যাচাই করে থাকেন NULL, যদি না আপনি কোনও তারিখের মান (যা আপনাকে মনে হয় না) প্রত্যাবর্তন করতে না চান তবে এটিকে একটি তারিখে রূপান্তর করার দরকার নেই।

পরিবর্তে, ব্যবহার করুন:

SELECT ISNULL( DOB , '')

যা ফিরে আসবে

''

যদি মান হয় NULL

একটি NULLতারিখ NULL(কোনও মূল্য নেই)) অন্যদিকে, একটি খালি স্ট্রিং 0এটিকে মূল্যায়ন করে , যা এসকিউএল সার্ভারে স্পষ্টতই একটি পূর্ণসংখ্যা যা দিনের সংখ্যা প্রতিনিধিত্ব করে 1900-01-01


-3

আপনি যদি জনবহুল হয়ে ডিওবি-র কোনও মান ফেরত দেওয়ার সন্ধান করছেন এবং কোনও ডিওবি জনবহুল না হলে নাল মানটি সরিয়ে ফেলুন। আপনি এটি চেষ্টা করে দেখতে পারেন তবে ডিওবি হ'ল তারিখের ধরণের না হয়ে একটি বারচর হবে।

isnull(cast(cast(DOB as date)as varchar),'') as DOB   (SQL SERVER)

2
একটি কাস্টিং VARCHARএকটি থেকে DATEএবং একটি ফিরে VARCHARকোন অর্থে দেখা যায় না। আপনি যখন সেই বাজে কথাটি সরিয়ে ফেলেন তখন আপনার উত্তরটি স্বল্প প্রতিক্রিয়াযুক্ত স্বীকৃত উত্তরের সমান।
এরিক

হ্যাঁ, আপনার দৃশ্যে কোনও অর্থবোধ হবে না তবে আমি যে দৃশ্যের জন্য এটি ব্যবহার করেছি, আমি এটি দিয়ে শুরু করেছি datetimeএবং কেবলমাত্র তারিখের প্রয়োজন ছিল YYYY-MM-DDdateআমি সময় ড্রপ হিসাবে কাস্টিং দ্বারা তাই । তারপরে ফাংশনটি varcharব্যবহারের অনুমতি দেয় ing isnullালাই। সুতরাং আমি জনবহুল রেকর্ডগুলির জন্য এখনও একটি তারিখ পাই এবং নাল মানগুলি সরিয়ে ফেলি। অন্যথায়, আমি পেয়েছিলাম 1900-01-01 00:00:00.000
এলভিস ক্যান্ডেলারিয়া

1
এটি আমার পরিস্থিতি নয় এটি প্রশ্নের দর্শন। আমি বিশ্বাস করি এজন্য আপনি ডাউন-ভোট সংগ্রহ করছেন। আপনি কার্যকরভাবে একটি আলাদা প্রশ্নের উত্তর দেওয়ার চেষ্টা করছেন।
এরিক

হ্যাঁ তুমিই ঠিক. আমি ভুল পড়েছি। আমার ভুল.
এলভিস ক্যান্ডেলারিয়া

-3

এটি NULL তারিখটিকে মহাকাশে রূপান্তর করবে। অ্যাপ্লিকেশন স্তর (এক্সেল) জায়গা সূক্ষ্ম পরিচালনা করে

ISNULL (CONVERT(varchar(50), w.TRANSACTIONDT, 120), '')  as wTRANSACTIONDT

-3

শুধু একটি দৃশ্য তৈরি করুন

পরীক্ষার দর্শনটি নির্বাচন করুন
হিসাবে
নির্বাচন করুন যখন বছর (ডিওবি) <= 1900 তারপরে অন্য কোনও ডিওবি পরীক্ষা শেষ না করে ডিওবি, থেরেক্সট, আইডি হিসাবে শেষ হবে;

এবং তার পরিবর্তে এটি মূল টেবিলটি ব্যবহার করুন: পরীক্ষা_দর্শন থেকে * নির্বাচন করুন *


-5

ব্যবহার

ইসনুল (রূপান্তর (বর্ণচর (500), তারিখ, 106), '') নির্বাচন করুন

ইহা কাজ করছে


2
এবং কেন এটি একটি ভাল ধারণা?
dezso

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.