如何编写查询,从sql表中执行异常的不同选择?

the*_*ist 5 sql t-sql

假设我在SQL数据库中有一些表有很多数据,有些行几乎相同,例如:

|===========================================|
|           Message                         |
|===========================================|
|              ...                          |
|-------------------------------------------|
|    account is rejected: <aa>              |
|-------------------------------------------|
|    account is rejected: <bb>              |
|-------------------------------------------|
|    mailbox unavailable: 550 550 <1@b.com> |
|-------------------------------------------|
|    mailbox unavailable: 550 550 <2@b.com> |
|-------------------------------------------|
|                 ...                       |
Run Code Online (Sandbox Code Playgroud)

为了我的目的,第一行是相同的,最后两行是相同的,所以查询应该返回

  1. 帐户被拒绝:
  2. 邮箱不可用:550 550

我想写一个会选择行的查询,在'<'符号之后消除字符,并且会做DISTINCT,但我不知道怎么做SELECT

你能帮我写这样的查询吗?

Mat*_*lie 5

以下内容从第一个<开始删除所有内容.

GROUP BY比使用更灵活,DISTINCT但在这种情况下完成相同的事情.

CASE声明是为了满足消息中没有消息的可能性<.如果有一个<那么只需使用该ELSE部分.

SELECT
  CASE WHEN CHARINDEX('<', Message) = 0 THEN Message ELSE LEFT(Message, CHARINDEX('<', Message)-1)) END AS Message
FROM
  yourTable
GROUP BY
  CASE WHEN CHARINDEX('<', Message) = 0 THEN Message ELSE LEFT(Message, CHARINDEX('<', Message)-1)) END
Run Code Online (Sandbox Code Playgroud)