Size: a a a

SqlCom.ru - Стиль жизни SQL

2020 August 24

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Адилет Тураров
Всем доброго времени суток, нужна помощь в решении задач, так как я только начинающий Ораклист. Не могу решить задачу, можете помочь пожалуйста🙏🙏
Так тут набор заданий...
источник

T

Timus in SqlCom.ru - Стиль жизни SQL
Ilia Zviagin
Так тут набор заданий...
так тут тестовое)))
источник

СИ

Сергей Игнатов... in SqlCom.ru - Стиль жизни SQL
всем привет, кто вкурсе как отключить эти стрелочки?)
источник

O

Oleg in SqlCom.ru - Стиль жизни SQL
Сергей Игнатов
всем привет, кто вкурсе как отключить эти стрелочки?)
Edit - Advanced - View White Space
источник

СИ

Сергей Игнатов... in SqlCom.ru - Стиль жизни SQL
просто от души, я все перетыкал)
источник

K

Konstantin in SqlCom.ru - Стиль жизни SQL
Подскажите как можно найти максимум из стоблца, тип которого nvarchar, но по факту там integer. Пробовал так - SELECT MAX(CONVERT(nvarchar(MAX), sr.Assessment)) as maximum. Не получается
источник

k

karb0f0s in SqlCom.ru - Стиль жизни SQL
наверное кастить нужно не в чар а в инт?
источник

SM

Sergey M in SqlCom.ru - Стиль жизни SQL
Konstantin
Подскажите как можно найти максимум из стоблца, тип которого nvarchar, но по факту там integer. Пробовал так - SELECT MAX(CONVERT(nvarchar(MAX), sr.Assessment)) as maximum. Не получается
select max(cast(sr.Assessment as int)) as Maximum  ?
источник

K

Konstantin in SqlCom.ru - Стиль жизни SQL
Блин, точно. Тупанул, спасибо
источник

K

Konstantin in SqlCom.ru - Стиль жизни SQL
Подскажите где ошибка в этом выражении: WHERE ss.KnowledgeAssessmentFormId = 1 AND cast(sr.Assessment as int) < 4 OR ss.KnowledgeAssessmentFormId = 2 AND sr.Assessment = 'NOT PASSED'. Столбец Assesment типа NVARCHAR(MAX), но там бывает значение и INT. Там точно значение INT, если KnowledgeAssessmentFormId = 1. Пытаюсь в WHERE проверить id и преобразовать, если он = 1, но пишет, что нельзя преобразовать NVARCHAR к  INT.
источник

DN

Denis Novickiy in SqlCom.ru - Стиль жизни SQL
Konstantin
Подскажите где ошибка в этом выражении: WHERE ss.KnowledgeAssessmentFormId = 1 AND cast(sr.Assessment as int) < 4 OR ss.KnowledgeAssessmentFormId = 2 AND sr.Assessment = 'NOT PASSED'. Столбец Assesment типа NVARCHAR(MAX), но там бывает значение и INT. Там точно значение INT, если KnowledgeAssessmentFormId = 1. Пытаюсь в WHERE проверить id и преобразовать, если он = 1, но пишет, что нельзя преобразовать NVARCHAR к  INT.
если версия позволяет, то использовать try_cast.
или же заменить условие <4  на in ('1','2','3')
источник

K

Konstantin in SqlCom.ru - Стиль жизни SQL
Denis Novickiy
если версия позволяет, то использовать try_cast.
или же заменить условие <4  на in ('1','2','3')
try_cast помог, спасибо
источник

N

Nataxaxaxa in SqlCom.ru - Стиль жизни SQL
Всем привет, подскажите плиз в чем ошибка.: The MERGE statement conflicted with the REFERENCE constraint "FK__Order Det__Order__1E05700A". :
Я связала две табл где внешний ключ OrderID (Ordes , Order Details), но не помогло

DECLARE @Data xml;
SET @Data = '<ROOT>
 <Orders>
  ...
 </Orders>
</ROOT>'
 
Merge [<Новая схема>].Orders as Trg  
Using (select d.x.value('OrderID[1]','int') as OrderID ,
d.x.value('ShipName[1]','nvarchar(40)') as ShipName ,  
d.x.value('ShipAddress[1]','nvarchar(60)') as ShipAddress from  
@Data.nodes('/Root/Order')as d(x) join [<Новая схема>].[Order Details] as Ord on Ord.OrderID=OrderId) as Src  
on Trg.OrderID=Src.OrderID  
When Matched Then update set
Trg.ShipName=Src.ShipName
Trg.ShipAddress=Src.ShipAddress
when not matched by target then  
insert (OrderID,ShipName,ShipAddress) values(Src.OrderID,Src.ShipName,Src.ShipAddress)
when not matched by source then Delete;  
GO
источник

A

Alex in SqlCom.ru - Стиль жизни SQL
Нарушаете целостность.
Скорее всего удаляете заказ, который присутствует в OrderDetails.

Вообще, если вы из XML что-то пытаетесь смёрджить (видимо, какую-то дельту, которой у вас сейчас нет) и при этом пишите
when not matched by source then delete
, то у вас все заказы, которых нет в этом xml, удалятся.
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
karb0f0s
наверное кастить нужно не в чар а в инт?
Кстати напомните, что теперь при ошибке каста происходит в SQLServer ?
источник

KT

Konstantin Taranov in SqlCom.ru - Стиль жизни SQL
Ilia Zviagin
Кстати напомните, что теперь при ошибке каста происходит в SQLServer ?
все тоже что и было, зависит из какого в какой тип конвертируем:
DECLARE @v varchar(30) = '-,1';
SELECT CAST(@v AS int);

Msg 245, Level 16, State 1, Line 7
Conversion failed when converting the varchar value '-,1' to data type int.


SELECT message_id, severity, text
 FROM sys.messages
WHERE text LIKE 'Conversion failed %' AND language_id = 1033;

210 16 Conversion failed when converting datetime from binary/varbinary string. 241 16 Conversion failed when converting date and/or time from character string. 245 16 Conversion failed when converting the %ls value '%.*ls' to data type %ls. 295 16 Conversion failed when converting character string to smalldatetime data type. 8169 16 Conversion failed when converting from a character string to uniqueidentifier. 11007 16 Conversion failed because the data value overflowed the data type used by the provider. 27116 16 Conversion failed while performing encryption. 27210 16 Conversion failed when converting the %ls to data type %ls.
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Konstantin Taranov
все тоже что и было, зависит из какого в какой тип конвертируем:
DECLARE @v varchar(30) = '-,1';
SELECT CAST(@v AS int);

Msg 245, Level 16, State 1, Line 7
Conversion failed when converting the varchar value '-,1' to data type int.


SELECT message_id, severity, text
 FROM sys.messages
WHERE text LIKE 'Conversion failed %' AND language_id = 1033;

210 16 Conversion failed when converting datetime from binary/varbinary string. 241 16 Conversion failed when converting date and/or time from character string. 245 16 Conversion failed when converting the %ls value '%.*ls' to data type %ls. 295 16 Conversion failed when converting character string to smalldatetime data type. 8169 16 Conversion failed when converting from a character string to uniqueidentifier. 11007 16 Conversion failed because the data value overflowed the data type used by the provider. 27116 16 Conversion failed while performing encryption. 27210 16 Conversion failed when converting the %ls to data type %ls.
Ну я имел в виду из строки в число, конечно
источник

ПД

Павлов Дмитрий... in SqlCom.ru - Стиль жизни SQL
Подскажите, пожалуйста, как правильно организовать редактирование данных в таблице.
Например у строки есть признак блокировки редактирования и если там 1, то строку редактировать нельзя.
Правильно ли я понимаю, что нужно
в транзакции
1 делать селект,
2 проверять признак блокировки
3 если ок, то апдейт, если нет, то отбой
источник

V

VlIvYur in SqlCom.ru - Стиль жизни SQL
Павлов Дмитрий
Подскажите, пожалуйста, как правильно организовать редактирование данных в таблице.
Например у строки есть признак блокировки редактирования и если там 1, то строку редактировать нельзя.
Правильно ли я понимаю, что нужно
в транзакции
1 делать селект,
2 проверять признак блокировки
3 если ок, то апдейт, если нет, то отбой
Можно сразу в where вписать "блокировка=0"
Правда в этом случае ты не будешь знать причину необновления данных
источник

А

Артем in SqlCom.ru - Стиль жизни SQL
Павлов Дмитрий
Подскажите, пожалуйста, как правильно организовать редактирование данных в таблице.
Например у строки есть признак блокировки редактирования и если там 1, то строку редактировать нельзя.
Правильно ли я понимаю, что нужно
в транзакции
1 делать селект,
2 проверять признак блокировки
3 если ок, то апдейт, если нет, то отбой
Основная задача какая?
источник