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' || nulllợi nhuận 'x', không nullnhư bạn có thể mong đợi.
||trong Oracle không phải là một toán tử logic, do đó, 'x'||nulltrả về x.
AND, NOTv.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'||nullkhi trở về x? n+nulltrả 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;
CONCATcũng tương thích với các DBMS khác (ít nhất là MySQL và Postgres).
nvl().)
CONCATcũ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 YYYYMMDDtừ YYYY-MM-DDnhư 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