โค้ดต่อไปนี้จะคืนค่า 1900-01-01 เมื่อฟิลด์ DOB เป็นโมฆะ ฉันต้องการ (และคาดว่า) มันจะคืนค่าสตริงว่าง ('') แต่ไม่ใช่ ฉันจะดำเนินการเพื่อให้ได้ผลลัพธ์ที่ต้องการได้อย่างไร
isnull(convert(date,DOB,1),'')
โค้ดต่อไปนี้จะคืนค่า 1900-01-01 เมื่อฟิลด์ DOB เป็นโมฆะ ฉันต้องการ (และคาดว่า) มันจะคืนค่าสตริงว่าง ('') แต่ไม่ใช่ ฉันจะดำเนินการเพื่อให้ได้ผลลัพธ์ที่ต้องการได้อย่างไร
isnull(convert(date,DOB,1),'')
คำตอบ:
คุณไม่สามารถรับสตริงที่ว่างเปล่าเพราะคุณกลับมาประเภทค่าจากDATE
ISNULL
ต่อMSDN ,ISNULL
ส่งคืนชนิดเดียวกันกับ check_expression ถ้า NULL ตัวอักษรมีให้เป็น check_expression ส่งกลับประเภทข้อมูลของ replace_value ถ้า NULL ตามตัวอักษรถูกจัดเตรียมไว้เป็น check_expression และไม่มีการจัดเตรียม replace_value ให้ส่งคืน int
หากคุณกำลังตรวจสอบว่ามีค่าอยู่หรือไม่NULL
ก็ไม่จำเป็นต้องแปลงเป็นวันที่เว้นแต่ว่าคุณต้องการส่งคืนค่าวันที่ (ซึ่งคุณดูเหมือนจะไม่)
ให้ใช้:
SELECT ISNULL( DOB , '')
ซึ่งจะกลับมา
''
NULL
ถ้ามีค่าเป็น
NULL
วันที่NULL
(ไม่มีค่า) สตริงที่ว่างเปล่าในมืออื่น ๆ ที่ประเมิน0
ซึ่งใน SQL Server 1900-01-01
เป็นปริยายจำนวนเต็มแทนจำนวนวันตั้งแต่
หากคุณต้องการส่งคืนค่า DOB เมื่อมีการเติมและลบค่า Null เมื่อไม่มี DOB ที่เติม คุณสามารถลองสิ่งนี้ได้ แต่ DOB จะเป็น varchar ไม่ใช่ประเภทวันที่
isnull(cast(cast(DOB as date)as varchar),'') as DOB (SQL SERVER)
VARCHAR
ส่ง a DATE
และa กลับไป a VARCHAR
ไม่สมเหตุสมผล เมื่อคุณลบเรื่องไร้สาระนั้นออกคำตอบของคุณจะเหมือนกับคำตอบที่ยอมรับโดยมีการแสดงออกน้อยลง
datetime
YYYY-MM-DD
ดังนั้นโดยการคัดเลือกนักแสดงขณะที่date
ฉันทิ้งเวลา จากนั้นจึงvarchar
อนุญาตให้ใช้งานisnull
ฟังก์ชันนี้ได้ ดังนั้นฉันยังคงได้รับวันที่สำหรับบันทึกที่มีประชากรและลบค่า Null 1900-01-01 00:00:00.000
มิฉะนั้นผมได้รับ
สิ่งนี้จะแปลงค่า NULL date เป็น space application layer (Excel) จัดการพื้นที่ได้ดี
ISNULL (CONVERT(varchar(50), w.TRANSACTIONDT, 120), '') as wTRANSACTIONDT
เพียงแค่สร้างมุมมอง
สร้างมุมมอง test_view
เป็น
กรณีที่เลือกเมื่อปี (DOB) <= 1900 จากนั้น null อื่น DOB สิ้นสุดเป็น DOB บางครั้ง id จากการทดสอบ
แล้วใช้แทนตารางต้นฉบับ: เลือก * จาก test_view
ใช้
เลือก isnull (แปลง (Varchar (500), วันที่, 106), '')
มันทำงาน
NULL
SELECT CAST('' AS DATE)
ประเภทข้อมูลคือDOB
อะไร