我有一个查询,它返回一个像今年月份信息一样存储的字段。比如2018年2月的整版数据。我需要将它除以“-”值,这样就可以得到三列,而不是只返回一列。
年-月文本
2018年2月整版
文本的格式不是固定的,因此catch必须使用“-”符号,并且数据将始终以这种方式拆分。如何轻松做到这一点?
编辑:
这是我的密码
声明@str varchar(80)
从vw\u mra\u adcontracts中选择@str=ipdesc
声明@first\u dash int=charindex('-',@str,1)声明@last\u dash int=charindex('-',reverse(ltrim(rtrim(@str)))
选择profileid,orgname,@str,
Substring(@Str, 1, @first_dash-1) as AdYear,
Substring(@Str, @first_dash+1, Len(@Str)-@first_dash-@last_dash) as AdMonth,
Substring(@Str, @last_dash+@first_dash, Len(@Str)) as AdSold,
来自vw\ mra\ ADU合同
问题是这个变量似乎没有遍历所有可用的记录,获取一条记录,然后拆分一条记录。所以对于adyear、admonth和adsold,我得到的每个返回记录的值都完全相同,即使它与该记录的值不匹配。
2条答案
按热度按时间72qzrwbm1#
你可以这样做:
例如:“2018年2月整版”
返回以下内容:
xqkwcwgp2#
另一种方法是使用此查询。如果字符串的参数少于3个,并且对于第一个参数(year)是第一个子字符串,则查询中的concat是为了防止错误的结果。
只需更改表中包含字段的字符串。
样品