You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中用IIF实现Lot字段按短横线截断或返回原字段

解决SQL Server中Lot字段的条件截断问题

可以用IIF函数结合CHARINDEX和SUBSTRING实现需求,正确写法如下:

SELECT
    IIF(
        CHARINDEX('-', dbo.Material_Trans.Lot) > 0,
        SUBSTRING(dbo.Material_Trans.Lot, 1, CHARINDEX('-', dbo.Material_Trans.Lot) - 1),
        dbo.Material_Trans.Lot
    ) AS ProcessedLot
FROM dbo.Material_Trans;

关键点说明:

  • CHARINDEX('-', Lot)找不到短横线时会返回0,所以用> 0作为判断条件,精准识别包含短横线的字段
  • 原语句里SUBSTRING用0作为起始位置,SQL Server会自动转为1,但显式写1更符合语法规范
  • 截断时要把CHARINDEX的结果减1,这样刚好取到短横线左侧的所有字符(不减1的话会把短横线本身也包含进去)

更简洁的替代写法

用LEFT函数可以简化截断逻辑,效果完全一致:

SELECT
    IIF(
        CHARINDEX('-', dbo.Material_Trans.Lot) > 0,
        LEFT(dbo.Material_Trans.Lot, CHARINDEX('-', dbo.Material_Trans.Lot) - 1),
        dbo.Material_Trans.Lot
    ) AS ProcessedLot
FROM dbo.Material_Trans;

内容的提问来源于stack exchange,提问作者RickWN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 19:25:41