Trong SQL Server, T-SQL TRANSLATE()
hàm trả về chuỗi được cung cấp dưới dạng đối số đầu tiên sau khi một số ký tự được chỉ định trong đối số thứ hai được dịch thành nhóm ký tự đích được chỉ định trong đối số thứ ba.
Nó tương tự như REPLACE()
nhưng có một số khác biệt quan trọng.
TRANSLATE()
hàm yêu cầu 3 đối số; chuỗi đầu vào, các ký tự sẽ được thay thế và các ký tự để thay thế chúng.
Cú pháp
Cú pháp như sau:
TRANSLATE ( inputString, characters, translations)
Trong đó inputString là chuỗi chứa các ký tự sẽ được thay thế.
Các ký tự đối số chỉ định ký tự nào nên được thay thế.
Các bản dịch đối số chỉ định những ký tự sẽ được thay thế bằng.
Ví dụ 1 - Cách sử dụng cơ bản
Dưới đây là một ví dụ về cách nó hoạt động:
SELECT TRANSLATE('Cat', 'at', 'ow') AS Result;
Kết quả:
+----------+ | Result | |----------| | Cow | +----------+
Vì vậy, trong ví dụ này, a
và t
các ký tự đã được thay thế bằng o
và w
.
Trong trường hợp này, REPLACE()
chức năng sẽ tạo ra cùng một kết quả. Đây là hai chức năng cạnh nhau:
SELECT TRANSLATE('Cat', 'at', 'ow') AS 'TRANSLATE', REPLACE('Cat', 'at', 'ow') AS 'REPLACE';
Kết quả:
+-------------+-----------+ | TRANSLATE | REPLACE | |-------------+-----------| | Cow | Cow | +-------------+-----------+
Trong trường hợp này, kết quả cho cả hai chức năng là như nhau, nhưng vì những lý do khác nhau.
Đây là những gì mỗi chức năng đã làm:
-
TRANSLATE()
đã thay thếa
vàt
(từng nhân vật riêng lẻ) -
REPLACE()
đã thay thếat
(chuỗi)
Ví dụ 2 - Thứ tự hỗn hợp
Ví dụ này minh họa nơi TRANSLATE()
khác với REPLACE()
. Trong ví dụ này, tôi thay đổi thứ tự của các ký tự được thay thế, cũng như các ký tự để thay thế chúng:
SELECT TRANSLATE('Cat', 'ta', 'wo') AS 'TRANSLATE', REPLACE('Cat', 'ta', 'wo') AS 'REPLACE';
Kết quả:
+-------------+-----------+ | TRANSLATE | REPLACE | |-------------+-----------| | Cow | Cat | +-------------+-----------+
Trong trường hợp này, chỉ có TRANSLATE()
chức năng đã có hiệu lực. Điều này là do chức năng này đi qua từng ký tự một. REPLACE()
mặt khác, tìm kiếm toàn bộ chuỗi, theo đúng thứ tự.
Ví dụ 3 - Một ví dụ mạnh mẽ hơn
Ví dụ sau dựa trên tài liệu Microsoft cho TRANSLATE()
hàm số. Nó thể hiện một tình huống trong đó hàm này có lợi ích đáng kể so với REPLACE()
chức năng:
SELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()') AS Result;
Kết quả:
+---------------+ | Result | |---------------| | 2*(3+4)/(7-2) | +---------------+
Để nhận được kết quả tương đương bằng cách sử dụng REPLACE()
, chúng tôi cần thực hiện điều này:
SELECT REPLACE ( REPLACE ( REPLACE ( REPLACE ( '2*[3+4]/{7-2}', '[', '(' ), ']', ')' ), '{', '(' ), '}', ')' ) AS Result;
Kết quả:
+---------------+ | Result | |---------------| | 2*(3+4)/(7-2) | +---------------+