-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathsqlserver2022-tsql-is-not-distinct.sql
57 lines (40 loc) · 1.92 KB
/
sqlserver2022-tsql-is-not-distinct.sql
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
SQL Server 2022
- IS [NOT] DISTINCT FROM
https://www.kursysql.pl
*/
SELECT @@VERSION
CREATE TABLE #testsql2022 (ColA int, ColB int)
INSERT INTO #testsql2022 (ColA, ColB)
VALUES (0, 0), (0, 1), (0, NULL), (NULL, NULL)
SELECT * FROM #testsql2022
SELECT * FROM #testsql2022
/*
Porównywanie dwóch wartości
*/
-- = w wyniku tylko wartości, które w obu kolumnach są identycze, pomijając te w których występują NULL-e
SELECT * FROM #testsql2022
SELECT ColA, ColB, 'ColA = ColB' FROM #testsql2022 WHERE ColA = ColB
-- <> w wyniku tylko wartości, które w obu kolumnach są różne, pomijając te w których występują NULL-e
SELECT * FROM #testsql2022
SELECT ColA, ColB, 'ColA <> ColB' FROM #testsql2022 WHERE ColA <> ColB
-- IS NOT DISTINCT FROM w obu kolumnach identyczne wartości, w tym w obu wartości nieokreślone
SELECT * FROM #testsql2022
SELECT ColA, ColB, 'ColA IS NOT DISTINCT FROM ColB' FROM #testsql2022 WHERE ColA IS NOT DISTINCT FROM ColB
-- IS DISTINCT FROM w obu kolumnach różne wartości, w tym jeśli jedną z nich jest wartość nieokreślona
SELECT * FROM #testsql2022
SELECT ColA, ColB, 'ColA IS DISTINCT FROM ColB' FROM #testsql2022 WHERE ColA IS DISTINCT FROM ColB
/*
Porównywanie do wartości nieokreślonej (NULL)
*/
-- =/ <> NULL porównanie do wartości nieokreślonej, zawsze daje w wyniku zbiór pusty
SELECT * FROM #testsql2022
SELECT ColA, ColB, 'ColA = NULL' FROM #testsql2022 WHERE ColA = NULL
SELECT ColA, ColB, 'ColA <> NULL' FROM #testsql2022 WHERE ColA <> NULL
-- IS NOT DISTINCT FROM NULL w pierwszej kolumnie wartość nieokreślona
SELECT * FROM #testsql2022
SELECT ColA, ColB, 'ColA IS NOT DISTINCT FROM NULL' FROM #testsql2022 WHERE ColA IS NOT DISTINCT FROM NULL
-- IS DISTINCT FROM NULL w pierwszej kolumnie wartość inna niż NULL
SELECT * FROM #testsql2022
SELECT ColA, ColB, 'ColA IS DISTINCT FROM NULL' FROM #testsql2022 WHERE ColA IS DISTINCT FROM NULL