powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ошибка преобразования varchar в int
14 сообщений из 39, страница 2 из 2
Ошибка преобразования varchar в int
    #39696271
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexWlr-lНе факт. Скорее всего криво используются.
Если select top 1 * from view падает с ошибкой, то проблема явно не в использовании
судя по всему так и есть, проблама в dbo.VLawQualify по полю ObjectInfo. Соединять будет при выборе будет в ошибке. Смотреть в типы внутри представления
...
Рейтинг: 0 / 0
Ошибка преобразования varchar в int
    #39696273
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wlr-l,

Астановитесь(с)
...
Рейтинг: 0 / 0
Ошибка преобразования varchar в int
    #39696276
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Думаю, что самого первого и красивого ответа " жените атрибуты разных типов данных " было достаточно.

Поэтому Астанавливаюсь.
...
Рейтинг: 0 / 0
Ошибка преобразования varchar в int
    #39696347
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wlr-lВ самом первом ответе красиво сказано: " жените атрибуты разных типов данных ".

Дело не в top, а в coalesce:
Дела в кривой вью, ее и нужно править
...
Рейтинг: 0 / 0
Ошибка преобразования varchar в int
    #39696466
Страдалецъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK - дались вам эти типы полей. Между таблицей где объявлены типы полей и запросом в теме стоит вьюшка, которая объединять в себе может любые типы в одну строку InfoObject. Ошибки преобразования и исключения обрабатываются в этой вьюшке и там все замечательно. Суть всего этого в получении по ObjectID краткого содержимого. Вот так выглядит вполне рабочий запрос, который ни на что не ругается и делает то что и задумано:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT        dbo.Object.ObjectID, COALESCE (dbo.VTransport.ObjectInfo, dbo.VTelephone.ObjectInfo, dbo.VOrganization.ObjectInfo, dbo.VInformation.ObjectInfo, dbo.VAddress.ObjectInfo, dbo.VHuman.ObjectInfo, dbo.VCrimCase.ObjectInfo, 
                         dbo.VCrimQualify.ObjectInfo) AS Info, dbo.DicObjectName.Context AS ObjectName
FROM            dbo.Object LEFT OUTER JOIN
                         dbo.VLawQualify ON dbo.Object.ObjectID = dbo.VLawQualify.ObjectID LEFT OUTER JOIN
                         dbo.VCrimQualify ON dbo.Object.ObjectID = dbo.VCrimQualify.ObjectID LEFT OUTER JOIN
                         dbo.DicObjectName ON dbo.Object.ObjectNameID = dbo.DicObjectName.ID LEFT OUTER JOIN
                         dbo.VCrimCase ON dbo.Object.ObjectID = dbo.VCrimCase.ObjectID LEFT OUTER JOIN
                         dbo.VHuman ON dbo.Object.ObjectID = dbo.VHuman.ObjectID LEFT OUTER JOIN
                         dbo.VAddress ON dbo.Object.ObjectID = dbo.VAddress.ObjectID LEFT OUTER JOIN
                         dbo.VInformation ON dbo.Object.ObjectID = dbo.VInformation.ObjectID LEFT OUTER JOIN
                         dbo.VOrganization ON dbo.Object.ObjectID = dbo.VOrganization.ObjectID LEFT OUTER JOIN
                         dbo.VTelephone ON dbo.Object.ObjectID = dbo.VTelephone.ObjectID LEFT OUTER JOIN
                         dbo.VTransport ON dbo.Object.ObjectID = dbo.VTransport.ObjectID


Как видите, здесь в coalesce спокойно уживаются и рак и жаба и напильник, в том числе и злополучный dbo.VInformation.ObjectInfo.
Но стоит добавить в coalesce dbo.VLawQualify.ObjectInfo и все запрос начинает чудить. Причем данных в dbo.VLawQualify нет вообще никаких, как и в dbo.VCrimQualify, но с dbo.VCrimQualify прекрасно работает, а с VLawQualify не хочет дружить никак.
...
Рейтинг: 0 / 0
Ошибка преобразования varchar в int
    #39696468
Страдалецъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а вот так выглядит VCrimQualify
Код: sql
1.
2.
3.
SELECT        dbo.ObjCrimQualify.ObjectID, dbo.DicCrimQualify.Context AS ObjectInfo
FROM            dbo.ObjCrimQualify LEFT OUTER JOIN
                         dbo.DicCrimQualify ON dbo.ObjCrimQualify.CrimQualifyID = dbo.DicCrimQualify.ID



и VLawQualify
Код: sql
1.
2.
3.
SELECT        dbo.ObjLawQualify.ObjectID, dbo.RefLawArticle.LawArticle + ' ' + dbo.RefLawArticle.Description AS ObjectInfo
FROM            dbo.ObjLawQualify LEFT OUTER JOIN
                         dbo.RefLawArticle ON dbo.ObjLawQualify.LawArticleID = dbo.RefLawArticle.ID
...
Рейтинг: 0 / 0
Ошибка преобразования varchar в int
    #39696472
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СтрадалецъTaPaK - дались вам эти типы полей.СтрадалецъНо стоит добавить в coalesce dbo.VLawQualify.ObjectInfo и все запрос начинает чудить.
1. Смотрите какой тип у столбца dbo.VLawQualify.ObjectInfo и у всех остальных, перечисленных в coalesce. Записываете их на бумажку чтобы не забыть.
2. Внимательно читаете - https://docs.microsoft.com/ru-ru/sql/t-sql/language-elements/coalesce-transact-sql?view=sql-server-2017, особенно про тип результата.
3. Не менее внимательно читаете - https://docs.microsoft.com/ru-ru/sql/t-sql/data-types/data-type-precedence-transact-sql?view=sql-server-2017, чтобы найти приоритеты типов столбцов из п.1
4. На основании знаний полученных из п.п. 2 и 3 определяете тип выражения с coalesce с включенным столбцом dbo.VLawQualify.ObjectInfo и без оного.

Когда осознаете откуда взялось преобразование varchar -> int, обратите внимание на 21660186
...
Рейтинг: 0 / 0
Ошибка преобразования varchar в int
    #39696473
Страдалецъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока писал ответ нашел я в чем был косяк, но оказался он совсем не в той вьюшке, на которую мне ругался SQL. Теперь все работает без проблем. Тему можно наверное закрыть - всем спасибо.
...
Рейтинг: 0 / 0
Ошибка преобразования varchar в int
    #39696474
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СтрадалецъTaPaK - дались вам эти типы полей. Между таблицей где объявлены типы полей и запросом в теме стоит вьюшка, которая объединять в себе может любые типы в одну строку InfoObject. Ошибки преобразования и исключения обрабатываются в этой вьюшке и там все замечательно.Эээ, "дались вам эти типы полей" - вы серьёзно думаете, что сервер вас обманывает? :-)

Ошибка очевидна, сервер вам её пишет русским по белому.

Зная типы полей, и посмотрев на запросы, можно понять, какая ошибка в вашем коде приводит к этой ошибке, и поправить её.
СтрадалецъКак видите, здесь в coalesce спокойно уживаются и рак и жаба и напильник, в том числе и злополучный dbo.VInformation.ObjectInfo.
Но стоит добавить в coalesce dbo.VLawQualify.ObjectInfo и все запрос начинает чудить. Причем данных в dbo.VLawQualify нет вообще никаких, как и в dbo.VCrimQualify, но с dbo.VCrimQualify прекрасно работает, а с VLawQualify не хочет дружить никак.Даже один и тот же запрос, на одних и тех же данных, может то выдавать ошибку, то работать правильно, в зависимости от построенного плана запроса.

А у вас даже запрос меняется. Разумеется, один из ваших запросов может отработать правильно, а другой с ошибкой, не понимаю, почему вас это так удивляет.
...
Рейтинг: 0 / 0
Ошибка преобразования varchar в int
    #39696477
Страдалецъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут несколько другая беда оказалась. Здесь SQL мне выдал во первых неверную ссылку на ошибку, а во вторых ошибка появлялась только при использовании результата запроса в coalesce(), но вне его работало без проблем, что мягко говоря несколько усложнило поиск ошибки.
Если помните, был такой эпизод Ералаша, когда Панкратов Черный в моторе не заводившейся машины ковырялся, а вокруг бегал малыш и говорил, что он знает что сломалось. Ситуация очень схожая. :)
...
Рейтинг: 0 / 0
Ошибка преобразования varchar в int
    #39696485
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СтрадалецъТут несколько другая беда оказалась. Здесь SQL мне выдал во первых неверную ссылку на ошибку, а во вторых ошибка появлялась только при использовании результата запроса в coalesce(), но вне его работало без проблем, что мягко говоря несколько усложнило поиск ошибки.Не "другая", а та, про которую вам сказали вначале обсуждения: 21660056

Во вторых, я вам писал, что ошибка может то возникать, то не возникать, совершенно без изменения запроса, и на одних и тех же данных.

И место тоже очевидно до банальности - либо у 2х вьюх разные типа полей, которые используются в coalesce, либо ошибка в других вьюхах, и про это тоже писали.
СтрадалецъЕсли помните, был такой эпизод Ералаша, когда Панкратов Черный в моторе не заводившейся машины ковырялся, а вокруг бегал малыш и говорил, что он знает что сломалось. Ситуация очень схожая. :)Вам говорили про конкретные методы поиска: смотреть типы полей, совместно участвующие в любых операциях. что бы смотреть меньше, идти вверх по цепочке от ObjectInfo

Понятно, что кроме "метода", ничего сказать было нельзя, потому что мы бегали вокруг машины неизвестной марки, которая стояла в запертом гараже.
Вы же отказывались дать информацию, говоря "у меня там всё правильно" :-)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Ошибка преобразования varchar в int
    #40084868
Dustin_Go
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как побороть такую проблему
insert into nsi_train (n_train )
values ('055и')
получаю ошибку как в текущемй теме, ms sql 2010 у нас.
если напишу запрос ,без буквы прокатит,а если полный варчар,то ошибка
...
Рейтинг: 0 / 0
Ошибка преобразования varchar в int
    #40084876
Dustin_Go
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
разобрались,программист ,который уничтожал программу перед увольнением наворотил constraintov там где этого не нужно,отключили их и работает
...
Рейтинг: 0 / 0
Ошибка преобразования varchar в int
    #40084912
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dustin_Go
разобрались,программист ,который уничтожал программу перед увольнением наворотил constraintov там где этого не нужно,отключили их и работает
ничего не понял
Но звучит прикольно
...
Рейтинг: 0 / 0
14 сообщений из 39, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ошибка преобразования varchar в int
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]