06/12/2018, 15:59

[DATABASE] Chia sẽ hàm định dạng chữ hoa ký tự đầu tiên (capitalize) hay Sentence Case

Xin chào các bạn, bài viết hôm nay, mình sẽ chia sẽ cho các bạn hàm định dạng chữ Hoa đầu tiên trong String của Sqlserver. Giống như trong Microsoft Word, có cung cấp cho chúng ta format Sentence case . VD: NGUYỄN THẢO hoặc nguyễn thảo => Nguyễn Thảo ...

Xin chào các bạn, bài viết hôm nay, mình sẽ chia sẽ cho các bạn hàm định dạng chữ Hoa đầu tiên trong String của Sqlserver.

Giống như trong Microsoft Word, có cung cấp cho chúng ta format Sentence case.

VD: NGUYỄN THẢO hoặc nguyễn thảo => Nguyễn Thảo

Nghĩa là viết hoa chữ cái đầu tiên.

Nhưng trong Microsoft Sqlserver, chỉ có cung cấp cho chúng ta hai hàm cơ bản:

  1. Upper() => định dạng chữ thường sang chữ hoa
  2. Lower() => định dạng chữ hoa sang chữ thường

Vì vậy các bạn muốn viết hoa chữ cái đầu tiên thì các bạn tạo cho mình một function fn_capitalize với source code bên dưới:

CREATE FUNCTION dbo.fn_capitalize
(
@str AS nvarchar(100)
)
RETURNS nvarchar(100)
AS
BEGIN

DECLARE
@ret_str AS NVARCHAR(100),
@pos AS int,
@len AS int

SELECT
@ret_str = N' ' + LOWER(@str),
@pos = 1,
@len = LEN(@str) + 1

WHILE @pos > 0 AND @pos < @len
BEGIN
SET @ret_str = STUFF(@ret_str,
@pos + 1,
1,
UPPER(SUBSTRING(@ret_str,@pos + 1, 1)))
SET @pos = CHARINDEX(N' ', @ret_str, @pos + 1)
END

RETURN RIGHT(@ret_str, @len - 1)

END

Cách sử dụng:

select tennv, dbo.fn_capitalize(tennv) AS Capitalize from dbo.tbl_nhanvien

Và dưới đây là kết quả trả về như chúng ta mong muốn:

capital_sqlserver

HAVE FUN :)

Tags: capitalize string sqlserversentence case sql
0