我要提取最后一个“-”和最后一个“,”之间的四位数数字到其自己的列中。然后我想将月份和年份提取到另外两列中。
以下是我从我想推送到另外3列的列中获得的数据的示例:
“捕获的信用卡:Visa,xxxx-xxxx-xxxx-1234,12 / 20。设置为默认值。”
我希望输出为:
抄送:1234 月:12 年:20
对此有任何帮助。
答案 0 :(得分:0)
如果您的字符串将采用上述一致的格式,请尝试以下内容。
DECLARE @string VARCHAR(MAX) = 'Captured Credit Card: Visa, xxxx-xxxx-xxxx-1234, 12/20. Set as Default.'
SELECT Column1 = 'CC:' + RIGHT(REPLACE(@string, RIGHT(@string, CHARINDEX(',', REVERSE(@string))),''), CHARINDEX('-', REVERSE(REPLACE(@string, RIGHT(@string, CHARINDEX(',', REVERSE(@string))),''))) -1),
Column2 = 'Month: ' + SUBSTRING(@string,CHARINDEX('/', @string)-2,2),
Column3 = 'Year: ' + SUBSTRING(@string,CHARINDEX('/', @string)+1,2)
答案 1 :(得分:0)
我尝试使用 <View style={{ flex: 1, flexDirection: 'row' }}>
<View>
<Text>
Spaceship building
</Text>
<Text>
Piano
</Text>
</View>
<View style={{ flex: 1 }}>
<Text style={{ marginLeft: 5 }}>
• John F. Kennedy
</Text>
<Text style={{ marginLeft: 5 }}>
• Francis Dunget
</Text>
</View>
</View>
翻转字符串,然后使用REVERSE()
从字符串末尾查找char位置。
然后,使用CHARINDEX()
和减法,最后一个字符的位置就是它在原始(未翻转)字符串中的位置。
LEN()
对于函数中使用的正确索引,我必须加或减1或2。
产生输出:
DECLARE @temp varchar(1000) = 'Captured Credit Card: Visa, xxxx-xxxx-xxxx-1234, 12/20. Set as Default.'
SELECT 'CC: '
+ SUBSTRING(@temp
, LEN(@temp) - CHARINDEX('-', REVERSE(@temp), 0) + 2
, LEN(@temp) - CHARINDEX(',', REVERSE(@temp), 0) --find the last ','
-(LEN(@temp) - CHARINDEX('-', REVERSE(@temp), 0)) --find the last '-')
-1
)
+ ' Month: '
+ SUBSTRING(@temp, CHARINDEX('/', @temp, 0) -2, 2)
+ ' Year: '
+ SUBSTRING(@temp, CHARINDEX('/', @temp, 0) + 1, 2)
AS [output]