用于查找特定文本的SQL

时间:2013-10-22 14:27:22

标签: sql sql-server search

以下示例数据的SQL命令是什么:

Table1  
ID|Description  
1 |Logon Failed. User tempUser1 is unknown
2 |Logon Failed. User Carl is unknown  


Expected result to get only the username after the word "User" and before the word "is"  
ID|Description  
1 |tempUser1  
2 |Carl

谢谢,
RYL

2 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

SELECT 
  ID, 
  SUBSTRING(
    description, 
    CHARINDEX('User', description) + 5, 
    CHARINDEX('is unknown', description) - CHARINDEX('User', description) - 6
  ) AS Description
FROM table1
ORDER BY ID

子字符串函数的奇怪格式只是为了适应这里的所有内容(删除滚动条)。

编辑:

如果字符串始终以Logon Failed. User开头:

,这也应该有效,并且效率更高
SELECT 
  ID, 
  SUBSTRING(Description, 20, CHARINDEX('is unknown', Description) - 21) AS Description
FROM table1
ORDER BY ID

答案 1 :(得分:0)

您可以尝试使用以下查询,并根据您的要求替换文本或设置长度:

select substring(column_name,patindex('%tempUser%',column_name),9) from Table_Name where column_name like '%tempUser%'