首页 > 解决方案 > T-sql:如果发票编号出现在付款描述字段中,则突出显示它们

问题描述

我有两个 sql-server 表:账单和付款。如果账单编号出现在付款描述字段中,我正在尝试创建一个视图以突出显示它们。例如:

表bll

|bllID     | bllNum   |
| -------- | -------- |
| 1        | qwerty123|
| 2        | qwerty345|
| 3        | 1234     |

表付款

|paymentID | description                        |
| -------- | ---------------------------------- |
| 1        | payment of qwerty123 and qwerty345 |

我想通过添加 html 代码来突出显示“qwerty123”和“qwerty345”字符串。我的代码是这样的:

SELECT REPLACE(payments.description, 
               COALESCE((SELECT TOP 1 bll.bllNum
                         FROM   bll
                         WHERE  COALESCE(bll.bllNum, '') <> '' AND 
                                PATINDEX('%' + bll.bllNum + '%', payments.description) > 0), ''),
               '<font color=red>' + 
               COALESCE((SELECT TOP 1 bll.bllNum
                         FROM   bll
                         WHERE  COALESCE(bll.bllNum, '') <> '' AND 
                                PATINDEX('%' + bll.bllNum + '%', payments.description) > 0), '') + 
               '</font>')
FROM payments

这有效,但仅适用于账单编号的第一次出现。如果描述字段有多个单号,则不会突出显示连续的单号。所以在我的例子中'qwerty123'被突出显示,但不是'qwerty345'

我需要突出显示所有事件。我怎样才能做到这一点?

标签: tsqlreplacesql-server-2017

解决方案


好的,我明白了,我可以将代码放入前端应用程序中,方法是遍历账单编号并在描述中找到它们时替换它们。只是想/希望有一个使用 t-sql 的简单解决方案。但我理解其中的困难。


推荐阅读