sql - 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) '...')
但这只是给我一个错误。
解决方案
使用case
表达式:
(case when len(product_name) <= 100 then product_name
else left(product_name, 97) + '...'
end) as new_product_name
推荐阅读
- laravel - 在 laravel 8 中不起作用路由模型绑定
- node.js - 在 Heroku 中设置配置变量不适用于 GOOGLE_APPLICATION_CREDENTIALS
- xml - ANSIBLE - 使用多个相同标签解析 XML 结果
- javascript - 如何通过 react-native (expo) 移动应用获取本地 IP 地址
- c++ - 返回时如何替换结构中姓名和姓氏的小写字母?
- android - 在 android Java 中不使用 ClickListener 的情况下调用按钮单击方法
- python - 编写代码找到铁条的最大切割
- nestjs - Nestjs 是否支持多个 DTO 用于“推断”在单个路由上使用哪个控制器方法的模式?
- excel - 如果此后重复具有相同数据的新值,如何删除单元格偏移中的单元格值?
- c# - 同一 HTTP 请求中的文件和数据 C# WebAPI