Apa yang dimaksud dengan operator rangkaian string dalam Oracle SQL?
Apakah ada fitur "menarik" yang harus saya perhatikan?
(Ini terlihat jelas, tetapi saya tidak dapat menemukan pertanyaan sebelumnya yang menanyakannya).
Apa yang dimaksud dengan operator rangkaian string dalam Oracle SQL?
Apakah ada fitur "menarik" yang harus saya perhatikan?
(Ini terlihat jelas, tetapi saya tidak dapat menemukan pertanyaan sebelumnya yang menanyakannya).
Jawaban:
Hal ini ||
, misalnya:
select 'Mr ' || ename from emp;
Satu-satunya fitur "menarik" yang bisa saya pikirkan adalah yang 'x' || null
kembali 'x'
, tidak null
seperti yang mungkin Anda harapkan.
||
di Oracle bukan operator yang logis, karena itu, 'x'||null
kembali x
.
AND
, NOT
dll. tentu saja ||
bukan operator yang logis. Tetapi apa yang harus terjadi karena 'x'||null
kembali x
? n+null
mengembalikan null, jadi apakah +
operator logis?
Ada juga konser, tetapi tidak banyak digunakan
select concat('a','b') from dual;
CONCAT
juga kompatibel dengan DBMS lain (setidaknya MySQL dan Postgres).
nvl()
.)
CONCAT
juga tersedia di Microsoft SQL Server 2012 dan seterusnya . CONCAT, meskipun tidak standar, jelas merupakan cara untuk pergi jika Anda ingin kode Anda portabel. ( ||
adalah operator standar ANSI yang sebenarnya, meskipun Anda tidak akan mengetahuinya dengan melihat dukungan untuk itu!)
Saya akan menyarankan concat ketika berhadapan dengan 2 string, dan || ketika string itu lebih dari 2:
select concat(a,b)
from dual
atau
select 'a'||'b'||'c'||'d'
from dual
concat(a,b)
lebih a||b
?
Menggunakan CONCAT(CONCAT(,),)
bekerja untuk saya ketika menggabungkan lebih dari dua string.
Masalah saya diperlukan bekerja dengan string tanggal (hanya) dan membuat YYYYMMDD
dari YYYY-MM-DD
sebagai berikut (yaitu tanpa mengkonversi ke format tanggal):
CONCAT(CONCAT(SUBSTR(DATECOL,1,4),SUBSTR(DATECOL,6,2)),SUBSTR(DATECOL,9,2)) AS YYYYMMDD