У меня есть таблица и она имеет 3 столбца. first column
это данные, которые содержат значение (числовое) и блок (в процентах и т.д ..), второй столбец numeric column
, третий Unit column
. То, что я хочу сделать, это разделить числовые и единицы из первого столбца, а затем поместить эти данные с разделителями в указанный столбец.split alpha и numeric с использованием sql
Вот мой стол:
Я попробовал эту функцию: SO link here..., это действительно расщепление альфа и числовой но я новичок в использовании SQL-функции, моя проблема есть параметр должен быть в строке STRING
, так что я сделал, это изменить его на Sub Query, но он дает мне ошибку.
образец кода:
SQL ФУНКЦИЯ:
create function [dbo].[GetNumbersFromText](@String varchar(2000))
returns table as return
(
with C as
(
select cast(substring(S.Value, S1.Pos, S2.L) as int) as Number,
stuff(s.Value, 1, S1.Pos + S2.L, '') as Value
from (select @String+' ') as S(Value)
cross apply (select patindex('%[0-9]%', S.Value)) as S1(Pos)
cross apply (select patindex('%[^0-9]%', stuff(S.Value, 1, S1.Pos, ''))) as S2(L)
union all
select cast(substring(S.Value, S1.Pos, S2.L) as int),
stuff(S.Value, 1, S1.Pos + S2.L, '')
from C as S
cross apply (select patindex('%[0-9]%', S.Value)) as S1(Pos)
cross apply (select patindex('%[^0-9]%', stuff(S.Value, 1, S1.Pos, ''))) as S2(L)
where patindex('%[0-9]%', S.Value) > 0
)
select Number
from C
)
оператора SELECT с подзапросом:
declare @S varchar(max)
select number from GetNumbersFromText(Select SomeColm From Table_Name) option (maxrecursion 0)
BTW, им с помощью SQL Server 2005.
Спасибо!
Строка перед первым пространством - это ваше второе значение столбца, строка после пробела - это значение вашего устройства. USE charindex и функция подстроки. – knkarthick24
@ knkarthick24 его не ограничивается «пробелом», некоторые данные - это только одна строка. Например «процент» – Waelhi
Проверьте мою попытку. – knkarthick24