Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как преобразовать nvarchar (типа: б/н 1258) в int (типа: 1258). / 5 сообщений из 5, страница 1 из 1
09.07.2001, 12:10
    #32009161
ДиД.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как преобразовать nvarchar (типа: б/н 1258) в int (типа: 1258).
Как преобразовать nvarchar (типа б/н 1258 ) в int (типа 1258 ). Чайник.
...
Рейтинг: 0 / 0
09.07.2001, 12:36
    #32009164
Osya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как преобразовать nvarchar (типа: б/н 1258) в int (типа: 1258).
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
09.07.2001, 12:55
    #32009165
ДиД.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как преобразовать nvarchar (типа: б/н 1258) в int (типа: 1258).
Спасибо. Мне такой же вариант пришел на ум, но думал, что профи предложат что-то другое, что-нибудь покороче. Все равно спасибо, значит шел по правильному пути.
...
Рейтинг: 0 / 0
09.07.2001, 13:43
    #32009169
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как преобразовать nvarchar (типа: б/н 1258) в int (типа: 1258).
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
09.07.2001, 15:57
    #32009183
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как преобразовать nvarchar (типа: б/н 1258) в int (типа: 1258).
Можно еще так

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
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как преобразовать nvarchar (типа: б/н 1258) в int (типа: 1258). / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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