Bài viết này khám phá thao tác chuỗi bằng cách sử dụng hàm SQL Coalesce trong SQL Server. Thao tác chuỗi được sử dụng để tạo ra một dạng dữ liệu hiện có khác.

Bạn đang xem : kết hợp trong sql

Bài viết này khám phá thao tác chuỗi sử dụng hàm SQL Coalesce trong SQL Server.

Thao tác chuỗi là một quy trình để tạo ra một dạng dữ liệu hiện có khác theo cách doanh nghiệp sử dụng hoặc hiển thị dưới dạng kết quả trong báo cáo. Tôi đã viết các bài viết về hàm chuỗi SQL trước đây, bao gồm hàm chuỗi SQL cho Data Munging tổng quan về hàm chuỗi con của SQL , thảo luận về các nhiệm vụ chuẩn bị dữ liệu và quản lý dữ liệu bằng cách sử dụng chuỗi SQL Server tích hợp sẵn chức năng.

Máy chủ SQL cũng có một số hàm ký tự cài sẵn cũng cho phép chúng tôi thao tác và chuyển đổi dữ liệu. Đồng thời, điều quan trọng là phải kiểm tra tập dữ liệu, khám phá các giá trị dữ liệu và mã hóa hoặc giải mã các giá trị, nếu cần, để tạo ra dữ liệu có ý nghĩa. Điều quan trọng là phải biết cách điều hướng qua các giá trị bị thiếu trong tập dữ liệu của chúng tôi, hiểu tác động đến các phép tính, truy vấn, báo cáo và chuẩn bị tập dữ liệu cũng như đưa ra các kỹ thuật để tránh để giá trị Null làm hỏng tập kết quả của chúng tôi.

Giá trị NULL là gì?

Trước khi chúng ta đi sâu vào cách điều hướng bãi mìn tiềm năng của các tập dữ liệu có các giá trị bị thiếu và tránh dẫm phải Null, trước tiên chúng ta hãy xem nhanh NULL là gì.

Theo định nghĩa của Wikipedia

Null (hoặc NULL) là một điểm đánh dấu đặc biệt được sử dụng trong Ngôn ngữ truy vấn có cấu trúc để chỉ ra rằng giá trị dữ liệu không tồn tại trong cơ sở dữ liệu. Được giới thiệu bởi người tạo ra mô hình cơ sở dữ liệu quan hệ, E. F. Codd, SQL Null phục vụ để đáp ứng yêu cầu rằng tất cả các hệ thống quản lý cơ sở dữ liệu quan hệ thực sự (RDBMS) đều hỗ trợ biểu diễn “thông tin bị thiếu và thông tin không thể áp dụng”. Codd cũng giới thiệu việc sử dụng ký hiệu omega (ω) trong tiếng Hy Lạp viết thường để biểu diễn Null trong lý thuyết cơ sở dữ liệu. Trong SQL, NULL là một từ dành riêng được sử dụng để xác định điểm đánh dấu này. … Không nên nhầm lẫn điều này với giá trị bằng 0. Giá trị rỗng biểu thị sự thiếu giá trị – việc thiếu giá trị không giống với giá trị bằng 0 giống như cách thiếu một câu trả lời không phải là điều tương tự như câu trả lời “không”.

Hơn nữa…

SQL null là một trạng thái, không phải là một giá trị. Cách sử dụng này khá khác với hầu hết các ngôn ngữ lập trình, trong đó giá trị null của một tham chiếu có nghĩa là nó không trỏ đến bất kỳ đối tượng nào.

SQL cung cấp một số chức năng hữu ích để làm việc với dữ liệu ký tự trong các truy vấn SQL của bạn mà chúng tôi sẽ mô tả chi tiết

Hàm SQL Coalesce

Các hàm SQL Coalesce và IsNull được sử dụng để xử lý các giá trị NULL. Trong quá trình đánh giá biểu thức, các giá trị NULL được thay thế bằng giá trị do người dùng xác định.

Hàm Coalesce trong SQL đánh giá các đối số theo thứ tự và luôn trả về giá trị không rỗng đầu tiên từ danh sách đối số đã xác định.

Cú pháp

COALESCE (biểu thức [1… n])

Các thuộc tính của hàm SQL Coalesce

  1. Biểu thức phải có cùng kiểu dữ liệu
  2. Nó có thể chứa nhiều biểu thức
  3. Hàm SQL Coalesce là một phím tắt cú pháp cho biểu thức Case
  4. Luôn luôn đánh giá một số nguyên trước tiên, một số nguyên theo sau là biểu thức ký tự cho kết quả là số nguyên.

Ví dụ:

1

2

3

4

5

6

CHỌN

THAN

(

KHÔNG ĐỦ

,

‘A’

,

‘B’

)

CHỌN

THAN

(

NULL

,

100

Xem Thêm  JavaScript Regex Replace - javascript regex thay thế tất cả

,

20

,

30

,

40

)

CHỌN

THAN

(

KHÔNG ĐỦ

,

KHÔNG ĐỦ

< p class = "crayon-sy">,

20

,

KHÔNG ĐỦ

,

KHÔNG ĐỦ

)

CHỌN

THAN

(

KHÔNG ĐỦ

,

KHÔNG ĐỦ

< p class = "crayon-sy">,

NULL

,

KHÔNG ĐỦ

,

KHÔNG ĐỦ

,

‘Prashanth’

)

CHỌN

THAN

(

NULL

,

KHÔNG ĐỦ

,

NULL

,

NULL

,

1

,

‘Prashanth’

)

CHỌN

THAN

(

KHÔNG ĐỦ

,

KHÔNG

,

KHÔNG ĐỦ

,

< p class = "bút sáp màu- k "> KHÔNG ĐỦ

,

KHÔNG ĐỦ

, < / p>

‘Prashanth’

,

1

)

SQL Coalesce trong một hoạt động nối chuỗi

Trong ví dụ sau, chúng ta sẽ nối một số giá trị. Tuy nhiên, xin nhắc lại, đây chỉ là một bài đánh giá để cho bạn biết điều gì sẽ xảy ra khi chúng tôi có giá trị NULL. Vì vậy, hãy tiếp tục và thực thi T-SQL. Và chúng ta có thể thấy rằng chúng ta gặp phải giá trị NULL trong khi xử lý thao tác nối chuỗi. Máy chủ SQL chỉ trả về NULL bất cứ khi nào nó gặp giá trị NULL. Kết quả không phải là sự kết hợp của tên, null và họ.

1

CHỌN

firstName

+

+

MiddleName

+

+

LastName

FullName

TỪ

Người

.

Người

Hãy để chúng tôi xử lý các giá trị NULL bằng cách sử dụng một hàm có tên là SQL COALESCE. Nó cho phép xử lý hành vi của giá trị NULL. Vì vậy, trong trường hợp này, hãy sử dụng hàm SQL kết hợp để thay thế bất kỳ giá trị NULL của tên đệm nào bằng giá trị ‘‘ (Char (13) -space). Câu lệnh SQL vẫn nên nối cả ba tên, nhưng không có giá trị NULL nào hiển thị trong đầu ra. Bây giờ chúng ta thấy rằng tên đầy đủ được hiển thị với một khoảng trắng ở giữa, cho các giá trị NULL. Bằng cách này, có thể tùy chỉnh các giá trị cột một cách hiệu quả.

1

CHỌN

firstName

+

+

THAN

(

MiddleName

,

” < / p>

)

+

+

LastName

TỪ

Người

.

Người

Hàm SQL Coalesce và xoay vòng

Ví dụ sau đây trả về các giá trị không rỗng được nối từ bảng ‘trạng thái’. Trong một số trường hợp, bạn có thể cần phải gán các giá trị tĩnh được nối cho một biến. Trong trường hợp này, các giá trị của cột thành phố được phân tích cú pháp bằng cách sử dụng hàm Coalesce SQL và được nối trong một dấu ngoặc kép để chuẩn bị một chuỗi giá trị. Sau đó, đầu ra được thao tác thêm để loại bỏ ký tự cuối cùng để tìm nạp một chuỗi giá trị đầu vào hợp lệ.

1

2

3

4

5

6

7

8

9

10

11

12

13

THẢ

BẢNG

NẾU

TỒN TẠI

STATE

;

TẠO

BẢNG

STATE

(

CITY < / p>

VARCHAR

(

50

)

,

STATE

VARCHAR

(

500

)

)

CHÈN

VÀO

STATE

GIÁ TRỊ

(

‘Appleton’

< p class = "crayon-sy">,

‘WI’

)

,

(

‘Milwaukee’

,

‘WI’

)

,

(

‘Madison’

,

‘WI’

)

,

(

‘Miami’

,

‘Florida’

)

,

(

‘Jacksonville’

,

‘Florida’

)

KHAI BÁO

@

col

nvarchar

(

MAX

< p class = "crayon-sy">)

;

CHỌN

@

col

= < / p>

THAN

(

@

col

,

)

+

+

< p class = "crayon-i"> THÀNH PHỐ

+

+

‘,’

TỪ

dbo

.

STATE

WHERE

trạng thái

=

‘WI ‘

;

CHỌN

chuỗi con

(

@

col < / p>

,

1

,

len

(

@

col

)

1 < / p>

)

Đầu ra:

1

CHỌN

‘(‘

+

chuỗi con

< p class = "crayon-sy"> (

@

col

,

1

,

len

(

@

col

< p class = "crayon-sy">)

1

)

+

‘)’

Hàm vô hướng do người dùng xác định và hàm SQL Coalesce

Một hàm do người dùng xác định được tạo để trả về một chuỗi cụ thể cho đầu vào được cung cấp và sau đó đầu ra được nhóm lại bằng cách sử dụng mệnh đề nhóm. Trong ví dụ sau, hàm có giá trị vô hướng trả về các giá trị chuỗi nối được phân tách bằng dấu ‘,’ cho đầu vào ‘Thành phố’ được chỉ định. Ví dụ sau trả về kết quả đầu ra trong đó cột trạng thái được nhóm lại và các giá trị thành phố của nó được nối và phân tách bằng dấu phân cách ‘,’ (dấu phẩy). Bạn cũng có thể sử dụng STRING_AGG nếu đang sử dụng SQL Server 2017. Bạn có thể tham khảo thêm thông tin với bài viết Các hàm chuỗi SQL hàng đầu trong SQL Server 2017

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

TẠO

CHỨC NĂNG

dbo

.

tfn_CoalesceConcat < / p>

(

< p class = "crayon-line" id = "urvanov-Cú pháp-highlighter-62b3d2d06f9bb428503827-4">

@

trạng thái

varchar

(

100

)

)

RET URNS

NVARCHAR

(

< p class = "crayon-i"> MAX

)

AS

BẮT ĐẦU

KHAI BÁO

@

str

NVARCHAR

(

MAX

)

;

CHỌN

@

str

=

THAN

(

@

str

+

‘,’

,

‘ ‘

)

+

< p class = "crayon-h">

THÀNH PHỐ

TỪ

dbo

.

STATE

WHERE

< p class = "crayon-h">

trạng thái

=

@

bang

ĐẶT HÀNG

THEO

< / p>

trạng thái

Xem Thêm  Công nhân web JavaScript: Hướng dẫn cho người mới bắt đầu - hướng dẫn nhân viên web javascript

;

QUAY LẠI

(

@

str

)

;

HẾT

ĐI < / p>

Đây là cách chúng ta gọi tên hàm dbo.tfn_CoalesceConcat trong câu lệnh select.

Đầu ra là một dòng giá trị nối liền nhau được phân tách bằng dấu phân cách ‘,’

1

2

3

4

CHỌN

trạng thái

,

thành phố

=

dbo

.

tfn_CoalesceConcat

< p class = "crayon-sy"> (

trạng thái

)

TỪ

dbo

.

trạng thái

NHÓM

BY

trạng thái

ĐƠN ĐẶT HÀNG

BY

trạng thái

;

Xác thực dữ liệu bằng hàm SQL Coalesce

Trong ví dụ sau, chúng ta sẽ tìm các địa chỉ liên hệ của nhân viên khẩn cấp. Thông thường, trong bất kỳ tổ chức nào, số điện thoại của nhân viên được liệt kê trong các cột cơ quan, nhà riêng, điện thoại di động.

Hãy để chúng tôi xem cách tìm nhân viên mà không có liên hệ khẩn cấp nào được liệt kê hoặc nói cách khác, hãy lấy tất cả thông tin chi tiết về nhân viên có liên hệ khẩn cấp.

Trong ví dụ sau, tb_EmergencyContact chứa số liên lạc của tất cả nhân viên.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

THẢ

BẢNG

NẾU

TỒN TẠI

tb_EmergencyContact

;

TẠO

BẢNG

tb_EmergencyContact

(

trống

int

,

tên đầu tiên

BIẾN HÌNH

(

100

)

KHÔNG

NULL

,

họ

BIẾN HÌNH

(

100

)

KHÔNG

NULL

,

mối quan hệ

BIẾN HÌNH

(

100

)

,

homephone

VARCHAR

(

25

)

,

< / p>

điện thoại làm việc

VARCHAR

(

< p class = "crayon-cn"> 25

)

,

điện thoại di động

VARCHAR

(

25

)

)

;

CHÈN

VÀO

tb_EmergencyContact

(

rỗng

,

tên đầu tiên

,

< p class = "crayon-h">

họ

,

mối quan hệ

,

homephone

,

điện thoại làm việc

,

điện thoại di động

)

GIÁ TRỊ

(

1

,

‘Ambika’

,

‘Prashanth’

,

‘Vợ’

,

KHÔNG ĐỦ

,

< / p>

‘920.176.1456’

,

‘928.132. 2967 ‘

)

,

(

2

,

‘Prashanth’

,

‘Jayaram’

,

‘vợ / chồng’

,

NULL

,

< p class = "crayon-h">

NULL

,

‘982.132.2867’ < / p>

)

,

(< / p>

3

,

‘Pravitha ‘

,

‘Prashanth’

,

‘Con gái’

,

NULL

,

NULL

,

NULL

)

Hàm SQL Coalesce được sử dụng để chọn các cột điện thoại gia đình, điện thoại làm việc và điện thoại di động. Trong trường hợp giá trị NULL, giá trị ‘NA’ (không áp dụng), một chuỗi ký tự được trả về.

1

2

3

4

5

6

CHỌN

tên đầu tiên

+

+

họ

tên đầy đủ

,

< / p>

mối quan hệ

,

THAN

(

điện thoại gia đình

,

điện thoại làm việc

,

điện thoại di động

,

‘NA’

)

phone

TỪ

dbo

.

tb_EmergencyContact

SQL Coalesce và cột được tính toán

Ví dụ sau sử dụng SQL COALESCE để so sánh các giá trị của các cột lương theo giờ, lương và hoa hồng và chỉ trả về giá trị không rỗng được tìm thấy trong các cột.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

TẠO

BẢNG

EMP

(

EMPNO < / p>

INT

KHÔNG

KHÔNG ĐỦ

,

ENAME

BIẾN HÌNH

(

20

)

,

CÔNG VIỆC

VARCHAR

(

10

)

,

MGR

INT

,

VIỆC LÀM

DATETIME

,

< p class = "crayon-i"> HOURLYWAGE

QUYẾT ĐỊNH

(

7

,

2 < / p>

)

,

LƯƠNG

QUYẾT ĐỊNH

(

7

,

2

)

,

NHIỆM VỤ

QUYẾT ĐỊNH

(

7

, < / p>

2

)

,

NUMSALES

QUYẾT ĐỊNH

(

7

,

2

)

,

DNO

INT

)

CHÈN

< p class = "crayon-h">

VÀO

EMP

GIÁ TRỊ

(

7369

,

‘SMITH’

,

‘CLERK’

,

7902

,

’02-MAR-1970′

,

NULL

,

8000

,

KHÔNG ĐỦ

,

20

,

2

)

,

(

7499

,

< p class = "crayon-h">

‘ALLEN’

,

‘SALESMAN’

,

7698

,

’20-MAR-1971′

,

NULL

,

1600

,

3000

,

4

,

3

)

,

(

7521

,

‘WARD’

,

‘SALESMAN’

,

7698

,

’07-FEB-1983′

,

40

,

1250

,

< / p>

5000

,

10

,

3

)

;

T-SQL sau đây được sử dụng để liệt kê tổng số tiền lương được trả cho tất cả nhân viên

1

2

3

4

5

CHỌN

EMPNO

,

TÊN

,

CAST

(

THAN

(

HOURLYWAGE

*

40

*

52 < / p>

,

lương

, < / p>

Mức lương

+

(

NHIỆM VỤ

*

SỐ BÁN HÀNG

)

)

NHƯ

thập phân

(

< p class = "crayon-cn"> 10

,

2

)

)

AS < / p>

TotalSalary

TỪ

dbo

.

EMP

ĐẶT HÀNG < / p>

BY

TotalSalary

;

Bây giờ, chúng ta hãy xem một ví dụ để tạo một cột được tính toán với hàm SQL Coalesce trong SQL Server

Nói chung, chúng ta có thể cần sử dụng biểu thức trong các bảng. Trong các bảng, yêu cầu tính toán các giá trị thường được tính bằng cách sử dụng một số cột hiện có và với ít giá trị vô hướng của bảng. Ngoài ra, các cột này phụ thuộc vào một hoặc nhiều cột khác. Bằng cách này, chúng ta có thể tạo một cột được tính toán bằng cách sử dụng hàm Coalesce SQL để các giá trị NULL được xử lý hiệu quả.

1

2

3

4

5

6

7

ALTER

BẢNG

dbo

.

EMP

THÊM

Total_Salary

NHƯ

CAST

(

THAN

(

HOURLYWAGE

*

40

*

< p class = "crayon-h">

52

,

lương

,

Mức lương

+

(

NHIỆM VỤ

*

SỐ BÁN HÀNG

)

)

NHƯ

thập phân

(

10

,

2

)

)

chọn

*

từ

EMP

Bây giờ, bạn có thể thấy rằng một câu lệnh SELECT đơn giản hiển thị các kết quả được tính toán trước.

Xem Thêm  Đối tượng Python thành chuỗi - python đúc thành chuỗi

SQL COALESCE và biểu thức CASE

Hàm COALESCE trong SQL có thể được biểu diễn theo cú pháp bằng cách sử dụng biểu thức CASE. Ví dụ, như chúng ta biết, hàm Coalesce trả về các giá trị không phải NULL đầu tiên.

CHỌN COALESCE (biểu thức1, biểu thức2, biểu thức3) TỪ TABLENAME;

Câu lệnh Coalesce SQL ở trên có thể được viết lại bằng câu lệnh CASE.

1

2

3

4

5

6

7

8

9

10

11

12

CHỌN

tên đầu tiên

+

+

họ

tên đầy đủ

,

< / p>

mối quan hệ

,

TRƯỜNG HỢP

KHI NÀO

homephone

KHÔNG

KHÔNG ĐỦ

Sau đó

homephone

KHI NÀO

điện thoại di động

KHÔNG

KHÔNG < / p>

Sau đó

điện thoại di động

KHI NÀO

điện thoại làm việc

KHÔNG

KHÔNG ĐỦ

Sau đó

điện thoại làm việc

ELSE

‘NA’

HẾT

EmergencyContactNumber

FROM

dbo

.

tb_EmergencyContact

Truy vấn trả về kết quả giống như kết quả sử dụng hàm COALESCE.

Kết thúc

Trong bài viết này, chúng tôi đã thảo luận một số mẹo và thủ thuật để chứng minh việc sử dụng hàm SQL Coalesce để truy vấn hiệu quả với T-SQL. Chúng tôi cũng đã thảo luận về các trường hợp sử dụng khác nhau của hàm SQL Coalesce. Cũng có thể tối ưu hóa đầu ra bằng cách tạo một cột được tính toán.

Tôi hy vọng bạn thích bài viết này về hàm Coalesce trong SQL Server. Hãy đặt bất kỳ câu hỏi nào trong phần bình luận bên dưới.


Xem thêm những thông tin liên quan đến chủ đề kết hợp trong sql là gì

[Tự học SQL SERVER] Bài 1: GIỚI THIỆU, phân biệt SQL vs SQL Server, chọn phiên bản phù hợp.

  • Tác giả: 1Click2beDBA
  • Ngày đăng: 2019-03-25
  • Đánh giá: 4 ⭐ ( 3523 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Nhập môn Hệ quản trị CSDL SQL Server.

    – SQL và SQL Sever là một, hay khác nhau ?
    – Microsoft SQL Server là bản thương mại, muốn xài phải trả tiền, ko tiền chỉ có Cr..k ?

    → Bài này sẽ giúp bạn trả lời những câu hỏi trên.

    ——————-
    Bài mở đầu cho loạt bài: Học SQL Server trong 24 giờ.

    Các bạn vui lòng nhấn Subscribe để được cập nhật bài mới.

    —-
    Download free SQL Server developer 2014 , hoặc 2016, 2017, 2019 cùng service patch từ link bên dưới:
    https://my.visualstudio.com/Downloads?q=sql%20server

Access SQL: khái niệm cơ bản, từ vựng và cú pháp

  • Tác giả: support.microsoft.com
  • Đánh giá: 4 ⭐ ( 7515 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Tìm hiểu cách để truy xuất dữ liệu từ cơ sở dữ liệu Access bằng ngôn ngữ truy vấn có cấu trúc hoặc SQL

SQL là gì? Tổng hợp những công dụng chính của SQL

  • Tác giả: chuyendoitinhieu.vn
  • Đánh giá: 5 ⭐ ( 7570 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Bài viết mô tả tất cả những kiến thức liên quan đến SQL, giải thích khái niệm SQL là gì và những công dụng của nó đối với dữ liệu bảng

Join trong SQL là gì?

  • Tác giả: hocphp.net
  • Đánh giá: 4 ⭐ ( 7428 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Bài viết này mình sẽ chia sẽ với mọi người về các loại Join trong SQL. Cùng tìm hiểu nào………………………………..

Tổng quan về SQL Joins trong SQL Server

  • Tác giả: helpex.vn
  • Đánh giá: 5 ⭐ ( 2071 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Khả năng kết hợp các kết quả từ các hàng liên quan từ nhiều bảng là một phần quan trọng của thiết kế hệ thống cơ sở dữ liệu quan hệ. Trong SQL Server, điều này được thực hiện với mệnh đề nối…

Câu lệnh SQL Join: Các loại Join trong SQL

  • Tác giả: viblo.asia
  • Đánh giá: 4 ⭐ ( 7570 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: 1. Các loại Join trong SQL – Ở bài trước thì mình đã chia sẻ về các câu lệnh thường dùng trong truy vấn CSDL như: SQL DISTINCT, SQL Where,SQL And Or, SQL Count, SQL ORDER BY, SQL GROUP…

MySQL kết hợp hai cột thành một cột

  • Tác giả: qastack.vn
  • Đánh giá: 5 ⭐ ( 8283 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Tôi đoán là bạn đang sử dụng MySQL trong đó +toán tử bổ sung, cùng với…

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

By ads_php