SQL Server:在关键字后查找子字符串

SQL Server:在关键字后查找子字符串,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我试图在这行中找到密码,我需要在关键字“password”后找到一个子字符串 SQL Server数据库表包含以下示例行: hello do you have any problems? Password: Qq111222 good luck tel: 9-189309, email: sso@gmail.com hello do you have any problems? Password: Aw654371 good luck tel: 9-189309, email: sso@gm

我试图在这行中找到密码,我需要在关键字“password”后找到一个子字符串

SQL Server数据库表包含以下示例行:

hello do you have any problems? Password: Qq111222 good luck  tel: 9-189309, email: sso@gmail.com
hello do you have any problems? Password: Aw654371 good luck  tel: 9-189309, email: sso@gmail.com
hello do you have any problems? Password: Zd354321 good luck  tel: 9-189309, email: sso@gmail.com
hello do you have any problems? Password: temporary password good luck  tel: 9-189309, email: sso@gmail.com
hello do you have any problems? Password: temporary password good luck  tel: 9-189309, email: sso@gmail.com
我正在寻找一种方法来查找密码后的10个字符,
substring
包含数字和字母,有没有一种方法可以在SQL Server中写入

我使用了以下命令,但得到了许多不合适的行:

select fields
from table
where fields like '%Password%[a-z,A-Z]%[0-9]%'
使用charindex():

但是,如果您的字符串没有
密码
单词,则此操作可能会失败,因此,您可以使用
charindex()
或包含
where
子句添加预防:

select *, substring(fields, charindex('password', fields + 'password')+9, 10)
from table t;
使用charindex():

但是,如果您的字符串没有
密码
单词,则此操作可能会失败,因此,您可以使用
charindex()
或包含
where
子句添加预防:

select *, substring(fields, charindex('password', fields + 'password')+9, 10)
from table t;

假设您希望空间位于任意一侧:

DECLARE @S varchar(8000);
SET @S = 'hello do you have any problems? Password: Qq111222 good luck  tel: 9-189309, email: sso@gmail.com';
SELECT SUBSTRING(@S,PATINDEX('%Password:%',@S) + LEN('Password:'),10);

假设您希望空间位于任意一侧:

DECLARE @S varchar(8000);
SET @S = 'hello do you have any problems? Password: Qq111222 good luck  tel: 9-189309, email: sso@gmail.com';
SELECT SUBSTRING(@S,PATINDEX('%Password:%',@S) + LEN('Password:'),10);