Untuk kasus kedua, mengapa hanya 'IN' berfungsi dan tidak '='?
Han
25
=akan bekerja jika Anda membandingkan dengan nilai tunggal. Namun, (22978, 23218, 23219)adalah array dan INdiperlukan untuk mencocokkan hanya satu dari nilai-nilai.
LdTrigger
2
Sql ini benar-benar bau tidak bisa menangani "atau" dalam pernyataan kasus. Ayo Microsoft waktu untuk tumbuh dari status basis data mainan.
Rich Bianco
1
"tidak dapat menangani" atau "dalam pernyataan kasus" .. hmmm .... saya rasa saya belum pernah melihat saklar menerima "atau" dalam bahasa apa pun. tampaknya akan mengalahkan tujuan saklar. bahasa apa yang menerima "atau" dalam sebuah kasus?
Heriberto Lugo
2
@Heriberto Lugo Saya tidak tahu berapa banyak bahasa yang Anda tahu tetapi setidaknya ada beberapa. VB.NET dan C # dapat menggunakannya dengan pemisahan koma sederhana. Itu tidak mengalahkan apa pun karena itu akan menyelamatkan Anda dari pengulangan kode yang sama dalam banyak kasus tanpa biaya.
terbalik - respons ini memang menambah nilai. Ini lebih dekat dengan pertanyaan OP, dan jika Anda ingin membuat beberapa CASE-WHENS sintaks ini mengurangi kode yang diperlukan.
Matt Kemp
1
@Leigh Saya menghargai jawaban ini. Sangat menyenangkan memiliki semua format berbeda dalam satu utas dan menjadikannya lebih bermanfaat sebagai referensi.
Jason Wheeler
3
@Bigwheels - Wow .. ini beberapa waktu yang lalu. Saya mungkin tidak setuju karena, secara logis, persis sama dengan respons lainnya . Yang mengatakan, Anda dan Matt membuat poin yang valid. Jika pertanyaannya adalah "apa sintaks yang benar hanya menggunakan ATAU ", ini memberikan jawaban. Namun, jika "mengurangi sintaksis yang diperlukan" adalah tujuannya, respons yang diterima lebih kompak. BTW, itu tidak membanting jawaban Darren, yang sangat valid. Hanya $ 0,02 saya :)
Anda dapat menggunakan salah satu ekspresi yang dimiliki WHEN, tetapi Anda tidak dapat mencampur keduanya.
WHEN when_expression
Merupakan ekspresi sederhana yang dibandingkan dengan input_expression saat format KASUS sederhana digunakan. when_expression adalah ekspresi yang valid. Jenis data input_expression dan masing-masing when_expression harus sama atau harus konversi implisit.
KAPAN Boolean_expression
Apakah ekspresi Boolean dievaluasi saat menggunakan format KASUS yang dicari. Boolean_expression adalah ekspresi Boolean yang valid.
Anda dapat memprogram:
1.
CASE ProductLine
WHEN'R'THEN'Road'WHEN'M'THEN'Mountain'WHEN'T'THEN'Touring'WHEN'S'THEN'Other sale items'ELSE'Not for sale'
Sudah ada banyak jawaban sehubungan dengan CASE. Saya akan menjelaskan kapan dan bagaimana cara menggunakannya CASE.
Anda bisa menggunakan ekspresi KASUS di mana saja di kueri SQL. Ekspresi KASUS dapat digunakan dalam pernyataan SELECT, WHERE clauses, Order by clause, HAVING clauses, Insert, UPDATE, dan DELETE.
Ekspresi CASE memiliki dua format berikut:
Ekspresi KASUS sederhana
CASE expression
WHEN expression1 THEN Result1
WHEN expression2 THEN Result2
ELSE ResultN
END
Ini membandingkan ekspresi dengan serangkaian ekspresi sederhana untuk menemukan hasilnya. Ekspresi ini membandingkan ekspresi dengan ekspresi dalam setiap klausa KAPAN untuk ekivalensi. Jika ekspresi dalam klausa KETIKA cocok, ekspresi dalam klausa KEMUDIAN akan dikembalikan.
Di sinilah pertanyaan OP jatuh. 22978 OR 23218 OR 23219tidak akan mendapatkan nilai yang sama dengan ekspresi yaitu ebv.db_no. Itu sebabnya memberikan kesalahan. Jenis data input_expression dan masing-masing when_expression harus sama atau harus konversi implisit.
Ekspresi KASUS yang dicari
CASEWHEN Boolean_expression1 THEN Result1
WHEN Boolean_expression2 THEN Result2
ELSE ResultN
END
Ekspresi ini mengevaluasi sekumpulan ekspresi boolean untuk menemukan hasilnya. Ekspresi ini memungkinkan operator pembanding, dan operator logika AND / OR dengan dalam setiap ekspresi Boolean.
1. SELECT pernyataan dengan ekspresi KASUS
--Simple CASE expression: SELECT FirstName, State=(CASE StateCode
WHEN'MP'THEN'Madhya Pradesh'WHEN'UP'THEN'Uttar Pradesh'WHEN'DL'THEN'Delhi'ELSENULLEND), PayRate
FROM dbo.Customer
-- Searched CASE expression:SELECT FirstName,State=(CASEWHEN StateCode ='MP'THEN'Madhya Pradesh'WHEN StateCode ='UP'THEN'Uttar Pradesh'WHEN StateCode ='DL'THEN'Delhi'ELSENULLEND), PayRate
FROM dbo.Customer
2. Perbarui pernyataan dengan ekspresi KASUS
-- Simple CASE expression: UPDATE Customer
SET StateCode =CASE StateCode
WHEN'MP'THEN'Madhya Pradesh'WHEN'UP'THEN'Uttar Pradesh'WHEN'DL'THEN'Delhi'ELSENULLEND-- Simple CASE expression: UPDATE Customer
SET StateCode =CASEWHEN StateCode ='MP'THEN'Madhya Pradesh'WHEN StateCode ='UP'THEN'Uttar Pradesh'WHEN StateCode ='DL'THEN'Delhi'ELSENULLEND
Dipilih karena dimasukkannya ELSE Salesbidang, yang mengembalikan nilai default jika tidak dimasukkan dalam pernyataan kasus, sesuai untuk permintaan bisnis.
FoxDeploy
3
select id,phno,case gender
when'G'then'M'when'L'then'F'else'No gender'endas gender
from contacts
Mengapa Anda tidak menjelaskan apa yang sedang dilakukan di sini? Penting untuk memberikan jawaban lengkap dengan Penjelasan karena beberapa pemula mungkin membutuhkan itu untuk memahami bagaimana ini memecahkan masalah
Gerhard Barnard
3
UPDATE table_name
SET column_name=CASEWHEN column_name in('value1','value2',.....)THEN'update_value'WHEN column_name in('value1','value2',.....)THEN'update_value'END
table_name = Nama tabel di mana Anda ingin melakukan operasi.
column_name = Nama Kolom / Bidang nilai yang ingin Anda atur.
update_value = Nilai yang ingin Anda atur column_name
Meskipun kode ini dapat menyelesaikan masalah OP, beberapa kata penjelasan akan lebih bermanfaat bagi pembaca di masa mendatang.
Thom
-5
Select s.stock_code,s.stock_desc,s.stock_desc_ar,
mc.category_name,s.sel_price,casewhen s.allow_discount=0then'Non Promotional Item'else'Prmotional
item'end'Promotion'From tbl_stock s innerjoin tbl_stock_category c on s.stock_id=c.stock_id
innerjoin tbl_category mc on c.category_id=mc.category_id
where mc.category_id=2and s.isSerialBased=0
Jawaban:
Format itu mengharuskan Anda untuk menggunakan:
Jika tidak, gunakan:
sumber
=
akan bekerja jika Anda membandingkan dengan nilai tunggal. Namun,(22978, 23218, 23219)
adalah array danIN
diperlukan untuk mencocokkan hanya satu dari nilai-nilai.sumber
IN
kata kunci jauh lebih baiksumber
Anda dapat menggunakan salah satu ekspresi yang dimiliki WHEN, tetapi Anda tidak dapat mencampur keduanya.
WHEN when_expression
Merupakan ekspresi sederhana yang dibandingkan dengan input_expression saat format KASUS sederhana digunakan. when_expression adalah ekspresi yang valid. Jenis data input_expression dan masing-masing when_expression harus sama atau harus konversi implisit.
KAPAN Boolean_expression
Apakah ekspresi Boolean dievaluasi saat menggunakan format KASUS yang dicari. Boolean_expression adalah ekspresi Boolean yang valid.
Anda dapat memprogram:
1.
2.
Tetapi bagaimanapun Anda dapat mengharapkan bahwa peringkat variabel akan dibandingkan dalam ekspresi boolean.
Lihat KASUS (Transact-SQL) (MSDN).
sumber
Sudah ada banyak jawaban sehubungan dengan
CASE
. Saya akan menjelaskan kapan dan bagaimana cara menggunakannyaCASE
.Anda bisa menggunakan ekspresi KASUS di mana saja di kueri SQL. Ekspresi KASUS dapat digunakan dalam pernyataan SELECT, WHERE clauses, Order by clause, HAVING clauses, Insert, UPDATE, dan DELETE.
Ekspresi CASE memiliki dua format berikut:
Ekspresi KASUS sederhana
Ini membandingkan ekspresi dengan serangkaian ekspresi sederhana untuk menemukan hasilnya. Ekspresi ini membandingkan ekspresi dengan ekspresi dalam setiap klausa KAPAN untuk ekivalensi. Jika ekspresi dalam klausa KETIKA cocok, ekspresi dalam klausa KEMUDIAN akan dikembalikan.
Di sinilah pertanyaan OP jatuh.
22978 OR 23218 OR 23219
tidak akan mendapatkan nilai yang sama dengan ekspresi yaitu ebv.db_no. Itu sebabnya memberikan kesalahan. Jenis data input_expression dan masing-masing when_expression harus sama atau harus konversi implisit.Ekspresi KASUS yang dicari
Ekspresi ini mengevaluasi sekumpulan ekspresi boolean untuk menemukan hasilnya. Ekspresi ini memungkinkan operator pembanding, dan operator logika AND / OR dengan dalam setiap ekspresi Boolean.
1. SELECT pernyataan dengan ekspresi KASUS
2. Perbarui pernyataan dengan ekspresi KASUS
3.ORDER BY klausa dengan ekspresi KASUS
4.Memiliki Klausa dengan ekspresi KASUS
Semoga kasus penggunaan ini akan membantu seseorang di masa depan.
Sumber
sumber
Mencoba
sumber
sumber
ELSE Sales
bidang, yang mengembalikan nilai default jika tidak dimasukkan dalam pernyataan kasus, sesuai untuk permintaan bisnis.sumber
table_name
= Nama tabel di mana Anda ingin melakukan operasi.column_name
= Nama Kolom / Bidang nilai yang ingin Anda atur.update_value
= Nilai yang ingin Anda aturcolumn_name
sumber
sumber