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

Cách đặt ngôn ngữ hiện tại trong SQL Server (T-SQL)

Trong SQL Server, bạn có thể đặt ngôn ngữ được sử dụng cho phiên hiện tại. Cài đặt ngôn ngữ hiện tại xác định ngôn ngữ được sử dụng trên tất cả các thông báo hệ thống, cũng như các định dạng ngày / giờ để sử dụng.

Bài viết này trình bày cách sử dụng T-SQL để đặt môi trường ngôn ngữ hiện tại trong SQL Server.

Cú pháp

Cú pháp để thiết lập ngôn ngữ hiện tại như sau:

SET LANGUAGE { [ N ] 'language' | @language_var }

Nơi [N]'language' | @language_var là tên của ngôn ngữ được lưu trữ trong sys.syslanguages chế độ xem tương thích hệ thống. Đối số này có thể là Unicode hoặc DBCS được chuyển đổi thành Unicode.

Để chỉ định một ngôn ngữ trong Unicode, hãy sử dụng N 'ngôn ngữ'. Nếu được chỉ định là một biến, thì biến đó phải là sysname loại dữ liệu ( sysname kiểu dữ liệu được sử dụng cho các cột bảng, biến và các tham số thủ tục được lưu trữ để lưu tên đối tượng).

Ví dụ 1 - Đặt ngôn ngữ

Dưới đây là một ví dụ về việc đặt ngôn ngữ cho phiên hiện tại thành tiếng Anh:

SET LANGUAGE British;

Kết quả:

Changed language setting to British.

Dưới đây là một ví dụ về cách đặt ngôn ngữ cho phiên hiện tại thành tiếng Đức:

SET LANGUAGE German;

Kết quả:

Die Spracheneinstellung wurde in Deutsch geändert.

Vì vậy, chúng ta có thể thấy rằng đầu ra đã ở ngôn ngữ mới được chỉ định.

Ví dụ 2 - Chạy một truy vấn

Thay đổi ngôn ngữ ảnh hưởng đến cách định dạng ngày tháng. Đây là một ví dụ cho thấy ý tôi muốn nói.

Đầu tiên, chúng tôi thay đổi ngôn ngữ thành British , sau đó chạy truy vấn để chuyển đổi một chuỗi thành ngày kiểu dữ liệu:

SET LANGUAGE British;
SELECT CONVERT(date, '09/01/2030') AS 'Convert';

Kết quả:

+------------+
| Convert    |
|------------|
| 2030-01-09 |
+------------+
Changed language setting to British.

Trong trường hợp này, ngày được dịch là ngày 9 tháng 1.

Sau đó, chúng tôi thay đổi ngôn ngữ thành us_English và chạy cùng một truy vấn:

SET LANGUAGE us_english;
SELECT CONVERT(date, '09/01/2030') AS 'Convert';

Kết quả:

+------------+
| Convert    |
|------------|
| 2030-09-01 |
+------------+
Changed language setting to us_english.

Vì vậy, trong trường hợp này, ngày được dịch là ngày 1 tháng 9, do cài đặt ngôn ngữ mới.

Đặt ngôn ngữ ở cấp độ truy vấn

Một số hàm T-SQL cho phép bạn chỉ định ngôn ngữ / văn hóa sẽ được sử dụng ở cấp độ truy vấn. Ví dụ:PARSE() chấp nhận một đối số tùy chọn được sử dụng để xác định cách chuỗi được cung cấp được định dạng. Điều này cho phép bạn đặt ngôn ngữ / văn hóa chỉ được sử dụng trong truy vấn đó (và thậm chí các phần khác nhau của truy vấn) mà không cần thay đổi cài đặt ngôn ngữ cho phiên hiện tại.

Dưới đây là một ví dụ để chứng minh ý tôi muốn nói:

SELECT 
    PARSE('01/06/2018' AS date USING 'en-US') AS 'en-US',
    PARSE('01/06/2018' AS date USING 'en-GB') AS 'en-GB';

Kết quả:

+------------+------------+
| en-US      | en-GB      |
|------------+------------|
| 2018-01-06 | 2018-06-01 |
+------------+------------+

Nếu bạn không cung cấp đối số này, ngôn ngữ của phiên hiện tại sẽ được sử dụng.

Tìm ngôn ngữ hiện tại

Bạn có thể chạy câu lệnh sau để trả về ngôn ngữ hiện đang được sử dụng:

SELECT @@LANGUAGE;

Để có thêm tùy chọn, hãy xem 3 cách để tải ngôn ngữ của phiên hiện tại trong SQL Server (T-SQL).

Tìm các ngôn ngữ có sẵn

Bạn có thể chạy mã sau để trả về danh sách các ngôn ngữ có sẵn:

EXEC sp_helplanguage;

Thao tác này trả về danh sách tất cả các ngôn ngữ.

Để thu hẹp nó thành một ngôn ngữ cụ thể, hãy thêm tên ngôn ngữ. Như thế này:

EXEC sp_helplanguage Spanish;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xem lịch sử công việc của SQL Server Agent với Azure Data Studio

  2. Giải mã kiểu chờ CXPACKET và CXCONSUMER trong SQL Server

  3. Trong SQL Server, làm cách nào để tạo câu lệnh CREATE TABLE cho một bảng nhất định?

  4. Tôi có nên sử dụng! =Hoặc <> cho T-SQL không?

  5. Làm cách nào để thoát khỏi dấu ngoặc vuông trong mệnh đề LIKE?