sql - SQL 不是 hard case 语句
问题描述
我正在处理存储过程的问题。我有以下内容:
SELECT @message = 'ID' + CAST(CASE WHEN @StoreID = 0 THEN 'BK'
WHEN @StoreID = 1 THEN 'MK'
END AS VARCHAR (50)) + char(13)
这会发送一封电子邮件,内容为:ID: 'MK'
或ID:'BK'
。
目前我正在对 case 语句进行硬编码,但我需要从不同的表中提取字符串 ' BK
'' '。MK
是@StoreID
从Store_Orders
表。名称来自 Store 表。
我尝试过的一种方法是这样做:
SELECT @message = 'ID' + StoreName from db.Store where StoreName = StoreID and StoreID = @StoreID
当我执行代码时,它会找到正确的商店,但会说
将 varchar 值“MK”转换为数据类型 int 时转换失败。
但我不想转换'MK' 我想通过@StoreID 找到它来显示'MK'。
解决方案
您是否正在寻找这样的东西:
SELECT CONCAT('ID: ' , CASE WHEN s.StoreID = 0
THEN (select '(''' + colname + ''')'
from othertable ot where ot.colname = s.colname)
WHEN s.StoreID = 1
THEN (select '(''' + colname + ''')'
from othertable ot where ot.colname = s.colname)
END) AS 'Message'
FROM Store_Orders s
推荐阅读
- javascript - 在选择选项时选中复选框
- icu - 如何将货币作为参数传递?
- ruby-on-rails - 如何在 Rails 中为 date_select 设置今天的最大日期?
- sql - 根据之前的输出运行 SQL 查询
- angular - 具有 Firebase 云功能的 Angular 6 Universal
- vba - 交换两个范围 VBA
- python - python - 如何防止 chromedriver.exe 在中断信号上关闭套接字连接?
- json - nifi avro - 找不到架构中定义的包命名空间
- android - 为什么我的模拟器没有在 Android Studio 上运行?
- hibernate - Spring @Query 在进行本机查询时无法处理位置参数