对于SQL来说,我是一个初学者;我遇到了以下问题。
我需要从我的一个列返回一个字符串值(包含10个字符)。但是,这一列充满了垃圾字符(即不可用)
列中的行看起来像这样(数据已被无人化):
2014-08-22 06:02:58.552:XXen:AAAAXXXXXXXbcod5fhuTGPfptufSLUp5MtVHbXuVSFkW8LJfdFkbYg ==] 2014-08-22 06:02:59.417:获取客户资料成功。 XXNUMBER:2xxxxxx1 。 ASDLJASDLKxxxx aksjdlXxx1213:123111
接下来是更多无用的角色。
因此,字符串包含各种字符;我正在寻找的部分是' XXNumber:2xxxxxx1',我需要返回' 2xxxxxx1'。此数字的长度是固定的(8个字符)。
知道如何做到这一点(我是SQL Management Studio),
很有责任,
史蒂芬
PS:我猜测某种SUBSTRING命令,但我有点遗忘。答案 0 :(得分:2)
您可以使用SUBSTRING()和CHARINDEX()执行此操作。例如:
DECLARE @string VARCHAR(MAX) = '2014-08-22 06:02:58.552: XXen: AAAAXXXXXXXbcod5fhuTGPfptufSLUp5MtVHbXuVSFkW8LJfdFkbYg==] 2014-08-22 06:02:59.417: Fetch customer profile success. XXNUMBER: 2xxxxxx1. ASDLJASDLKxxxx aksjdlXxx1213: 123111'
SELECT SUBSTRING(@string,CHARINDEX('XXNUMBER:',@string,1)+10,8)
返回:
2xxxxxx1
select中的+10是XXNUMBER字符串的长度。
答案 1 :(得分:0)
folling查询为我们提供了所需的输出:
选择substring((SUBSTRING(columnname,CHARINDEX('xxnumber',columnname),18)),11,8)作为dx.xxx的xxnumber
感谢您的初步回复,它为我们提供了解决手头问题所需的视角!