nvarchar(100)
字段包含更多行的信息,因为每行都有不同的信息(不知何故,每个行号都有含义:第一行是名字,第二行是姓氏,...)我想查询该字段并将结果作为四个字段。我想使用单个select语句来执行此操作(即使在后台使用funcion或视图)。
我尝试使用charindex
和replace
,但我无法以一个查询结束。
以某种方式查询
select MULTILINEFIELD from TABLE
返回:
'John
Doe
34
Male'
我想把它变成
SELECT FIRSTNAME, LASTNAME, AGE, GENDER FROM SOMETHING
在我的情况下,“换行符”是char(10) + char(13)
,我已经摆脱了新行:
选择
REPLACE( REPLACE(MULTILINEFIELD , char(10), '') , char(13), '@')
from TABLE
给出了
John@Doe@34@Male
我使用'@'作为char,肯定我在数据库中找不到。
我希望我表达自己。
答案 0 :(得分:0)
假设您的数据中没有任何句点,您可以使用PARSENAME轻松完成此操作。
declare @MultiLineField varchar(50) = 'John
Doe
34
Male';
with normalizedValues as
(
select REPLACE( REPLACE(@MultiLineField , char(10), '') , char(13), '.') as FullData
)
select
PARSENAME(FullData, 4) as FirstName
, PARSENAME(FullData, 3) as LastName
, PARSENAME(FullData, 2) as Age
, PARSENAME(FullData, 1) as Sex
from normalizedValues