Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách hàm TRANSLATE () hoạt động trong SQL Server (T-SQL)

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, at các ký tự đã được thay thế bằng ow .

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ế at (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) |
+---------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các tính năng bảo mật trong SQL Server 2017

  2. Máy chủ SQL của bạn khỏe mạnh như thế nào? Giám sát cơ sở dữ liệu chủ động là rất quan trọng

  3. Sự khác biệt giữa kết nối trái và tham gia phải trong SQL Server

  4. Hội thảo trên web:Theo dõi tiến trình truy vấn trong SQL Server

  5. Câu lệnh SQL CASE:Nó là gì và những cách tốt nhất để sử dụng nó là gì?