首页 > 解决方案 > Transact-SQL - 如果值太长,则选择值并添加自定义字符串

问题描述

我整理了一个很长的声明,其中包括从表中选择不同的产品名称。在我的应用程序中,我想将此名称的长度限制为 100 个字符。到目前为止,我已经通过在查询中使用 LEFT(product_name, 100) 实现了这一点。但是,我想在值中添加一个“...”,以防名称实际上超过 100 个字符,以便用户知道实际值比他看到的长一点。

因此,如果我的数据库中只有 2 个产品:

1: 'Awesome product'
2: 'Another totally awsome product that will make your life a lot better if you buy it because it is really awesome in many ways.'

结果应如下所示:

1: 'Awesome product'
2: 'Another totally awsome product that will make your life a lot better if you buy it because it is rea...'

如何使用简单的 SELECT 查询来做到这一点?我的第一个直觉是尝试使用 IF:

SELECT LEFT(product_name, 100) + (IF LEN(product_name > 100) '...')

但这只是给我一个错误。

标签: sqltsqlif-statementselectstring-length

解决方案


使用case表达式:

(case when len(product_name) <= 100 then product_name
      else left(product_name, 97) + '...'
 end) as new_product_name

推荐阅读