我正在努力解决我遇到的问题,我试图从一个Column
创建两个字段。
第一个将在第一个斜杠之前获取数据,这很好用。
下面是我的代码:
@Column(insertable = false, updateable = false)
private Timestamp createdTimestamp;
我遇到的第二个问题是,我现在还需要将第二个和第三个斜杠之间的内容提取到另一列称为Middlepath的列中。
我不能为了爱或金钱而工作,数据由三个单位组成,中间用/分隔。
如果有人可以提供帮助,我将永远感激不已,因为我可以做一点SQL,但我不是程序员。
数据看起来像“产品” \“电梯” \“小型电梯”(长度可能会大不相同)。
输出应为“礼物”部分
答案 0 :(得分:0)
这将为您提供升降机的输出。
declare @t table (Files varchar(50))
insert into @t values ('Products\lifts\small')
select substring(files,CHARINDEX('\',files)+1,CHARINDEX('\', files, (CHARINDEX('\', files)+1)) - CHARINDEX('\',files)-1) from @t
答案 1 :(得分:0)
您可以使用3个字符串函数:left()
,right()
和charindex()
,如下所示:
select
left(Fullpath, charindex('\', Fullpath) - 1) shortpath,
left(
right(Fullpath, len(Fullpath) - charindex('\', Fullpath)),
charindex('\', right(Fullpath, len(Fullpath) - charindex('\', Fullpath))) - 1
) middle
from Productcategories
请参见demo。
结果:
> shortpath | middle
> :-------- | :-----
> Products | lifts
对于只有1个“ \”或一个都不存在的情况,则更为复杂:
select
case charindex('\', Fullpath)
when 0 then Fullpath
when 1 then ''
else left(Fullpath, charindex('\', Fullpath) - 1)
end shortpath,
case charindex('\', Fullpath)
when 0 then ''
else case charindex('\', Fullpath, charindex('\', Fullpath) + 1)
when 0 then substring(Fullpath, charindex('\', Fullpath) + 1, len(Fullpath))
else left(
right(Fullpath, len(Fullpath) - charindex('\', Fullpath)),
charindex('\', right(Fullpath, len(Fullpath) - charindex('\', Fullpath))) - 1
)
end
end middle
from Productcategories
请参见demo。