-
Notifications
You must be signed in to change notification settings - Fork 0
/
SQL_Query_Variable.sql
136 lines (92 loc) · 4.13 KB
/
SQL_Query_Variable.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
--1. показать горизонтальную линию из звёздочек длиной @L
--вертикально
DECLARE @StarsCount INT = 10
WHILE (@StarsCount>0)
BEGIN
PRINT '*'
SET @StarsCount = @StarsCount - 1
END
--горизонтально
DECLARE @StarsCountH INT = 10
DECLARE @String nvarchar(max) = ''
WHILE (@StarsCountH>0)
BEGIN
SET @String = @String + '*'
SET @StarsCountH = @StarsCountH - 1
END
PRINT @String
--2. скрипт проверяет, какое сейчас время суток, и выдаёт приветствие "добрый вечер!" или "добрый день!"
DECLARE @CurrentTime TIME = GETDATE()
DECLARE @Message NVARCHAR(max)
IF @CurrentTime >= '04:30:00' AND @CurrentTime < '11:00:00'
SET @Message = 'Доброе утро!'
ELSE IF @CurrentTime >= '11:00:00' AND @CurrentTime < '17:00:00'
SET @Message = 'Добрый день!'
ELSE IF @CurrentTime >= '17:00:00' AND @CurrentTime < '23:00:00'
SET @Message = 'Добрый вечер!'
ELSE
SET @Message = 'Доброй ночи!'
PRINT @Message
--3. скрипт генерирует случайный сложный пароль длиной @PasswordLength символов
DECLARE @PasswordLength INT = 10 -- желаемая длина пароля
DECLARE @AvailableCharacters NVARCHAR(100) = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+='
DECLARE @Password NVARCHAR(max) = ''
WHILE (@PasswordLength >0)
BEGIN
DECLARE @RandomIndex INT = ROUND(RAND() * (LEN(@AvailableCharacters) - 1) + 1, 0)
SET @Password = @Password + SUBSTRING(@AvailableCharacters, @RandomIndex, 1)
SET @PasswordLength = @PasswordLength - 1
END
PRINT @Password
--4. показать факториалы всех чисел от 0 до 25
DECLARE @Number INT = 0
DECLARE @Factorial NUMERIC(38, 0) = 1
WHILE (@Number <= 25)
BEGIN
PRINT 'Факториал числа ' + CAST(@Number AS NVARCHAR(10)) + ': ' + CAST(@Factorial AS NVARCHAR(50))
SET @Number = @Number + 1
SET @Factorial = @Factorial * @Number
END
--5. показать все простые числа от 3 до 100000 (я уменьшил макс.число на порядок, слишком долго подсчитывает)
DECLARE @start INT = 3
DECLARE @end INT = 100000
DECLARE @primes TABLE ( Number INT) -- Создание временной таблицы для хранения информации о простых числах
WHILE (@start <= @end)
BEGIN
DECLARE @isPrime BIT = 1
DECLARE @divisor INT = 2
-- Проверка, является ли число простым
WHILE (@divisor * @divisor <= @start)
BEGIN
IF (@start % @divisor = 0)
BEGIN
SET @isPrime = 0
BREAK
END
SET @divisor = @divisor + 1
END
-- Если число простое, добавляем его в таблицу
IF (@isPrime = 1) INSERT INTO @primes (Number) VALUES (@start)
SET @start = @start + 1
END
SELECT Number -- Вывод таблицы простых чисел
FROM @primes
--6. показать номера всех счастливых трамвайных билетов
DECLARE @TicketNumber INT = 100000
WHILE (@TicketNumber <= 999999)
BEGIN
DECLARE @TicketString NVARCHAR(6) = RIGHT('000000' + CAST(@TicketNumber AS NVARCHAR(6)), 6) -- преобразование в строку 6 значн.
-- получение суммы 3х левых чисел
DECLARE @SumLeftHalf INT =
CAST(SUBSTRING(@TicketString, 1, 1) AS INT) +
CAST(SUBSTRING(@TicketString, 2, 1) AS INT) +
CAST(SUBSTRING(@TicketString, 3, 1) AS INT)
-- получение суммы 3х правых чисел
DECLARE @SumRightHalf INT =
CAST(SUBSTRING(@TicketString, 4, 1) AS INT) +
CAST(SUBSTRING(@TicketString, 5, 1) AS INT) +
CAST(SUBSTRING(@TicketString, 6, 1) AS INT)
IF (@SumLeftHalf = @SumRightHalf) -- сравнение сумм
PRINT @TicketString
SET @TicketNumber = @TicketNumber + 1
END