powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как исключить из запроса данные типа VARCHAR
3 сообщений из 3, страница 1 из 1
как исключить из запроса данные типа VARCHAR
    #32064315
Guest11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть следующий запрос

select *
from InsuranceOperation I, g_opr G
WHERE left(g.sdr_prv,9)=I.BaseDocNumber

BaseDocNumber - int
sdr_prv - varchar (9 первых символов - цифры)

Если имеется запись, где первый 9 символов содержат не цифры, запрос вываливается с ошибкой Server: Msg 245, Level 16, State 1, Line 1
Syntax error converting the varchar value 'Ã' to a column of data type smallint.

Вопрос как исключить те данные которые не соответсвуют виду left(g.sdr_prv,9) - int
...
Рейтинг: 0 / 0
как исключить из запроса данные типа VARCHAR
    #32064329
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Можно проверять функцией ISNUMERIC()

WHERE CASE WHEN ISNUMERIC(left(g.sdr_prv,9)) = 1 THEN left(g.sdr_prv,9) ELSE NULL END =I.BaseDocNumber


2. Можно наоборот преобразовать I.BaseDocNumber к типу char/varchar

WHERE left(g.sdr_prv,9) = cast(I.BaseDocNumber as varchar(9))


3. Можно проверять так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create table #t(f1 varchar( 10 ))
insert #t values('102a')
insert #t values('101')
insert #t values('a101')
insert #t values('a')
insert #t values('')
insert #t values(NULL)
insert #t values('101-2A/25')

select cast(left(left(f1, 9 ), patindex('%[^1234567890]%', left(f1,  9 )+'a')- 1 ) as int) from #t
drop table #t


4. Можно вообще пересмотреть схему данных на предмет хранения одинаковых атрибутов в полях с одинаковым типом.
...
Рейтинг: 0 / 0
как исключить из запроса данные типа VARCHAR
    #32064331
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select *
from (select *
from InsuranceOperation
WHERE isnumeric(left(g.sdr_prv,9))>0) I, g_opr G
WHERE left(g.sdr_prv,9)=I.BaseDocNumber
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как исключить из запроса данные типа VARCHAR
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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