Câu trả lời:
Đó là ||
, ví dụ:
select 'Mr ' || ename from emp;
Tính năng "thú vị" duy nhất tôi có thể nghĩ đến là 'x' || null
lợi nhuận 'x'
, không null
như bạn có thể mong đợi.
||
trong Oracle không phải là một toán tử logic, do đó, 'x'||null
trả về x
.
AND
, NOT
v.v ... thì tất nhiên đó ||
không phải là toán tử logic. Nhưng điều đó có nghĩa là gì 'x'||null
khi trở về x
? n+null
trả về null, vậy là +
một toán tử logic?
Cũng có concat, nhưng nó không được sử dụng nhiều
select concat('a','b') from dual;
CONCAT
cũng tương thích với các DBMS khác (ít nhất là MySQL và Postgres).
nvl()
.)
CONCAT
cũng có sẵn trong Microsoft SQL Server 2012 trở đi . CONCAT, mặc dù không đạt tiêu chuẩn, chắc chắn là cách tốt nhất nếu bạn muốn mã của mình có thể mang theo được. ( ||
là toán tử tiêu chuẩn ANSI thực tế, mặc dù bạn sẽ không biết điều đó bằng cách xem hỗ trợ cho nó!)
Tôi sẽ đề nghị concat khi xử lý 2 chuỗi và || khi các chuỗi đó nhiều hơn 2:
select concat(a,b)
from dual
hoặc là
select 'a'||'b'||'c'||'d'
from dual
concat(a,b)
hơn a||b
?
Sử dụng CONCAT(CONCAT(,),)
làm việc cho tôi khi nối nhiều hơn hai chuỗi.
Vấn đề của tôi bắt buộc phải làm việc với chuỗi ngày (chỉ) và tạo YYYYMMDD
từ YYYY-MM-DD
như sau (nghĩa là không chuyển đổi sang định dạng ngày):
CONCAT(CONCAT(SUBSTR(DATECOL,1,4),SUBSTR(DATECOL,6,2)),SUBSTR(DATECOL,9,2)) AS YYYYMMDD