powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как преобразовать nvarchar (типа: б/н 1258) в int (типа: 1258).
5 сообщений из 5, страница 1 из 1
Как преобразовать nvarchar (типа: б/н 1258) в int (типа: 1258).
    #32009161
ДиД.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как преобразовать nvarchar (типа б/н 1258 ) в int (типа 1258 ). Чайник.
...
Рейтинг: 0 / 0
Как преобразовать nvarchar (типа: б/н 1258) в int (типа: 1258).
    #32009164
Osya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
declare @t varchar(10)
select @t='б/н 1258'
select CONVERT(int,
(CASE WHEN (SUBSTRING(@t,1,1) LIKE '[0-9]') THEN SUBSTRING(@t,1,1) END)
+(CASE WHEN (SUBSTRING(@t,2,1) LIKE '[0-9]') THEN SUBSTRING(@t,2,1) END)
+(CASE WHEN (SUBSTRING(@t,3,1) LIKE '[0-9]') THEN SUBSTRING(@t,3,1) END)
+(CASE WHEN (SUBSTRING(@t,4,1) LIKE '[0-9]') THEN SUBSTRING(@t,4,1) END)
+(CASE WHEN (SUBSTRING(@t,5,1) LIKE '[0-9]') THEN SUBSTRING(@t,5,1) END)
+(CASE WHEN (SUBSTRING(@t,6,1) LIKE '[0-9]') THEN SUBSTRING(@t,6,1) END)
+(CASE WHEN (SUBSTRING(@t,7,1) LIKE '[0-9]') THEN SUBSTRING(@t,7,1) END)
+(CASE WHEN (SUBSTRING(@t,8,1) LIKE '[0-9]') THEN SUBSTRING(@t,8,1) END)
+(CASE WHEN (SUBSTRING(@t,9,1) LIKE '[0-9]') THEN SUBSTRING(@t,9,1) END)
+(CASE WHEN (SUBSTRING(@t,10,1) LIKE '[0-9]') THEN SUBSTRING(@t,10,1) END)
)
...
Рейтинг: 0 / 0
Как преобразовать nvarchar (типа: б/н 1258) в int (типа: 1258).
    #32009165
ДиД.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Мне такой же вариант пришел на ум, но думал, что профи предложат что-то другое, что-нибудь покороче. Все равно спасибо, значит шел по правильному пути.
...
Рейтинг: 0 / 0
Как преобразовать nvarchar (типа: б/н 1258) в int (типа: 1258).
    #32009169
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
create proc ConvertToMyType
@t varchar(10),
@t1 varchar(10) out
as
begin
declare @i int

set @i = 1
set @t1 = ''

while @i <= len(@t)
begin
if substring(@t, @i, 1) like '[0-9]'
set @t1 = @t1 + substring(@t, @i, 1)

set @i = @i + 1
end
end

Или оформить в виде функции - как больше нравится...
...
Рейтинг: 0 / 0
Как преобразовать nvarchar (типа: б/н 1258) в int (типа: 1258).
    #32009183
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно еще так

declare @t varchar(10)
select @t='б/н 12589'

select case when @t not like '%[0-9]%' then 0 else
convert(int,substring(@t, patindex('%[0-9]%',@t),
datalength(@t)-patindex('%[0-9]%',reverse(@t))-patindex('%[0-9]%',@t)+2))end
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как преобразовать nvarchar (типа: б/н 1258) в int (типа: 1258).
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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