|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Второй час бьюсь с этой ошибкой, но просветления в чем проблема не приходит. Есть запрос вида: Код: sql 1. 2. 3. 4.
ObjectInfo может хранить строковое значение или null. По отдельности запросы VInformation и VLawQualify выполняются без ошибок, но вот в таком варианте я получаю ошибку преобразования в int. Откуда вообще берется преобразование непонятно. Возможно что происходит попытка вычислить текстовое значение '5/10-А', на котором собственно и вылетает ошибка, но применение cast, convert эту ошибку не убирают. Замена COALESCE на CASE порождает ту-же ошибку. Есть идеи? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 12:18 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Страдалецъ, жените атрибуты разных типов данных, отсюда и ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 12:20 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
СтрадалецъВозможно что происходит попытка вычислить текстовое значение '5/10-А', на котором собственно и вылетает ошибка, но применение cast, convert эту ошибку не убирают. Замена COALESCE на CASE порождает ту-же ошибку. Есть идеи?Очевидно, вы неправильно применили cast, convert. Сначала расскажите алгоритм преобразований данных, которые вы хотите выполнить в данном запросе, простыми словами, себе, а потом уже легко напишется и правильный запрос на SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 12:33 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Вот только где они эти разные типы? Источники данных для COALESCE по отдельности ошибок не дают. Оба источника возвращают либо строку, либо null и вот в этом видимо и засада, но ведь COALESCE и должен сделать выбор как для таких данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 12:34 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
СтрадалецъВот только где они эти разные типы? Источники данных для COALESCE по отдельности ошибок не дают. Оба источника возвращают либо строку, либо null и вот в этом видимо и засада, но ведь COALESCE и должен сделать выбор как для таких данных. просто скажите тип данных для обоих ObjectInfo ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 12:35 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Страдалецъ, сохраните результат, например, в таблице и посмотрите ее структуру. sp_help 'схема.таблица' ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 12:36 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
СтрадалецъВот только где они эти разные типы? Источники данных для COALESCE по отдельности ошибок не дают. Оба источника возвращают либо строку, либо null и вот в этом видимо и засада, но ведь COALESCE и должен сделать выбор как для таких данных.Посмотрите все поля, участвующие в запросе. Очевидно, ошибка будет там, где поле типа INT как то взаимодействует с полем типа VARCHAR Может, это поле dbo.VInformation.ObjectID, dbo.Object.ObjectID, dbo.VLawQualify.ObjectID, dbo.VInformation.ObjectInfo, dbo.VLawQualify.ObjectInfo Вот для начала составьте список типов этих полей ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 12:37 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
TaPaKСтрадалецъВот только где они эти разные типы? Источники данных для COALESCE по отдельности ошибок не дают. Оба источника возвращают либо строку, либо null и вот в этом видимо и засада, но ведь COALESCE и должен сделать выбор как для таких данных. просто скажите тип данных для обоих ObjectInfoМожет, у него при джойне ошибка, может, какой то ID целочисленный, а какой то строка? ТС же не показал ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 12:39 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
alexeyvgTaPaKпропущено... просто скажите тип данных для обоих ObjectInfoМожет, у него при джойне ошибка, может, какой то ID целочисленный, а какой то строка? ТС же не показал ошибку. ну я расшифоровываю "Источники данных для COALESCE по отдельности ошибок не дают" как тот же запрос только COALESE другой, но всё имеет право на жизнь :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 12:40 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Ну вот текст ошибки. --------------------------- Microsoft SQL Server Management Studio --------------------------- SQL Execution Error. Executed SQL statement: SELECT dbo.Object.ObjectID, COALESCE (dbo.VLawQualify.ObjectInfo, dbo.VInformation.ObjectInfo) AS Expr1 FROM dbo.Object LEFT OUTER JOIN dbo.VInformation ON dbo.Object.ObjectID = dbo.VInformation.ObjectID LEFT OUTER JOIN dbo.VLawQualify ON dbo.Object.... Error Source: .Net SqlClient Data Provider Error Message: Ошибка преобразования значения varchar "№ 52/1-697" в тип данных int. Это значение содержится в VInformation.ObjectInfo и если выполнить запрос VInformation отдельно, никаких ошибок нет. Не возникает ошибки если написать так: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 13:04 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Страдалецъ, типы будете в секрете держать? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 13:18 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Страдалецъ, Помедитируйте над результатом запроса Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 13:23 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Страдалецъ, Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 13:24 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Страдалецъ, Error Message: Ошибка преобразования значения varchar "№ 52/1-697" в тип данных int . Какому числу соответствует "№ 52/1-697"? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 13:49 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
СтрадалецъНе возникает ошибки если написать так:Так сделайте конверт: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 14:08 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
alexeyvg, О каком конверте идет речь, если в первом же посте ТС написано: " Возможно что происходит попытка вычислить текстовое значение '5/10-А', на котором собственно и вылетает ошибка "? И сообщение об ошибке он уже привел :" Error Message: Ошибка преобразования значения varchar "№ 52/1-697" в тип данных int" ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 14:12 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
invm, Помедитировал, как и ожидалось имеем varchar и null. Сделал запрос: Код: sql 1. 2. 3.
Получил ту-же ошибку. Код: sql 1. 2.
Получил ту-же ошибку. Сделал запрос по значениям возвращающимся из запроса: Код: sql 1. 2.
Получил ожидаемый '№ 52/1-697' Все это я уже проверил в разных вариантах. Понимания, как победить проблему не добавило. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 14:13 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Страдалецъ, Вы все еще не понимаете, что делаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 14:18 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Страдалецъ, да скажи ты типы полей уже, медитатор авторВы все еще не понимаете, что делаете. вы тоже ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 14:23 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
TaPaK, Как мы уже поняли, разные и автоматически не конвертируются один в другой. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 14:29 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Wlr-lTaPaK, Как мы уже поняли, разные и автоматически не конвертируются один в другой. вы же там что-то расчитываете, не отвлекайтесь тс. Ошибка это ака Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 14:32 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Страдалецъinvm, Помедитировал, как и ожидалось имеем varchar и null. Сделал запрос: Код: sql 1. 2. 3.
Получил ту-же ошибку. У вас dbo.VInformation и/или dbo.VLawQualify это view, видимо. Вот они криво и написаны. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 14:33 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
msLex, " Вот они криво и написаны ." Не факт. Скорее всего криво используются. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 14:38 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Wlr-lНе факт. Скорее всего криво используются. Если select top 1 * from view падает с ошибкой, то проблема явно не в использовании ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 14:48 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
msLex, В самом первом ответе красиво сказано: " жените атрибуты разных типов данных ". Дело не в top, а в coalesce: Код: sql 1.
Т.е. имеем несовместимые типы данных и пытаемся всем миром привести их к одному. TaPaK уже смоделировал эту ситуацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 14:56 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
msLexWlr-lНе факт. Скорее всего криво используются. Если select top 1 * from view падает с ошибкой, то проблема явно не в использовании судя по всему так и есть, проблама в dbo.VLawQualify по полю ObjectInfo. Соединять будет при выборе будет в ошибке. Смотреть в типы внутри представления ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 14:56 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Wlr-l, Астановитесь(с) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 14:57 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Думаю, что самого первого и красивого ответа " жените атрибуты разных типов данных " было достаточно. Поэтому Астанавливаюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 15:04 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Wlr-lВ самом первом ответе красиво сказано: " жените атрибуты разных типов данных ". Дело не в top, а в coalesce: Дела в кривой вью, ее и нужно править ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 16:40 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
TaPaK - дались вам эти типы полей. Между таблицей где объявлены типы полей и запросом в теме стоит вьюшка, которая объединять в себе может любые типы в одну строку InfoObject. Ошибки преобразования и исключения обрабатываются в этой вьюшке и там все замечательно. Суть всего этого в получении по ObjectID краткого содержимого. Вот так выглядит вполне рабочий запрос, который ни на что не ругается и делает то что и задумано: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Как видите, здесь в coalesce спокойно уживаются и рак и жаба и напильник, в том числе и злополучный dbo.VInformation.ObjectInfo. Но стоит добавить в coalesce dbo.VLawQualify.ObjectInfo и все запрос начинает чудить. Причем данных в dbo.VLawQualify нет вообще никаких, как и в dbo.VCrimQualify, но с dbo.VCrimQualify прекрасно работает, а с VLawQualify не хочет дружить никак. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 20:12 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Ну а вот так выглядит VCrimQualify Код: sql 1. 2. 3.
и VLawQualify Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 20:17 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Страдалецъ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 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 20:27 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Пока писал ответ нашел я в чем был косяк, но оказался он совсем не в той вьюшке, на которую мне ругался SQL. Теперь все работает без проблем. Тему можно наверное закрыть - всем спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 20:28 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
СтрадалецъTaPaK - дались вам эти типы полей. Между таблицей где объявлены типы полей и запросом в теме стоит вьюшка, которая объединять в себе может любые типы в одну строку InfoObject. Ошибки преобразования и исключения обрабатываются в этой вьюшке и там все замечательно.Эээ, "дались вам эти типы полей" - вы серьёзно думаете, что сервер вас обманывает? :-) Ошибка очевидна, сервер вам её пишет русским по белому. Зная типы полей, и посмотрев на запросы, можно понять, какая ошибка в вашем коде приводит к этой ошибке, и поправить её. СтрадалецъКак видите, здесь в coalesce спокойно уживаются и рак и жаба и напильник, в том числе и злополучный dbo.VInformation.ObjectInfo. Но стоит добавить в coalesce dbo.VLawQualify.ObjectInfo и все запрос начинает чудить. Причем данных в dbo.VLawQualify нет вообще никаких, как и в dbo.VCrimQualify, но с dbo.VCrimQualify прекрасно работает, а с VLawQualify не хочет дружить никак.Даже один и тот же запрос, на одних и тех же данных, может то выдавать ошибку, то работать правильно, в зависимости от построенного плана запроса. А у вас даже запрос меняется. Разумеется, один из ваших запросов может отработать правильно, а другой с ошибкой, не понимаю, почему вас это так удивляет. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 20:30 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
Тут несколько другая беда оказалась. Здесь SQL мне выдал во первых неверную ссылку на ошибку, а во вторых ошибка появлялась только при использовании результата запроса в coalesce(), но вне его работало без проблем, что мягко говоря несколько усложнило поиск ошибки. Если помните, был такой эпизод Ералаша, когда Панкратов Черный в моторе не заводившейся машины ковырялся, а вокруг бегал малыш и говорил, что он знает что сломалось. Ситуация очень схожая. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 20:40 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
СтрадалецъТут несколько другая беда оказалась. Здесь SQL мне выдал во первых неверную ссылку на ошибку, а во вторых ошибка появлялась только при использовании результата запроса в coalesce(), но вне его работало без проблем, что мягко говоря несколько усложнило поиск ошибки.Не "другая", а та, про которую вам сказали вначале обсуждения: 21660056 Во вторых, я вам писал, что ошибка может то возникать, то не возникать, совершенно без изменения запроса, и на одних и тех же данных. И место тоже очевидно до банальности - либо у 2х вьюх разные типа полей, которые используются в coalesce, либо ошибка в других вьюхах, и про это тоже писали. СтрадалецъЕсли помните, был такой эпизод Ералаша, когда Панкратов Черный в моторе не заводившейся машины ковырялся, а вокруг бегал малыш и говорил, что он знает что сломалось. Ситуация очень схожая. :)Вам говорили про конкретные методы поиска: смотреть типы полей, совместно участвующие в любых операциях. что бы смотреть меньше, идти вверх по цепочке от ObjectInfo Понятно, что кроме "метода", ничего сказать было нельзя, потому что мы бегали вокруг машины неизвестной марки, которая стояла в запертом гараже. Вы же отказывались дать информацию, говоря "у меня там всё правильно" :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 21:05 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
как побороть такую проблему insert into nsi_train (n_train ) values ('055и') получаю ошибку как в текущемй теме, ms sql 2010 у нас. если напишу запрос ,без буквы прокатит,а если полный варчар,то ошибка ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 14:38 |
|
Ошибка преобразования varchar в int
|
|||
---|---|---|---|
#18+
разобрались,программист ,который уничтожал программу перед увольнением наворотил constraintov там где этого не нужно,отключили их и работает ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 15:15 |
|
|
start [/forum/topic.php?all=1&fid=46&tid=1684490]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 189ms |
0 / 0 |