我在SQL Server Management Studio中的SQL查询中使用了这个函数,这样,如果列dbo.Material_Trans.Lot
中有一个破折号,则会删除该破折号及其右侧的所有字符串。
SUBSTRING(dbo.Material_Trans.Lot, 0, CHARINDEX('-', dbo.Material_Trans.Lot))
但是,如果dbo.Material_Trans.Lot
列不包含'-'
,则不返回任何内容。我希望使用IIF
语句,如果dbo.Material_Trans.Lot
不包含'-'
,则返回dbo.Material_Trans.Lot
列,否则执行
SUBSTRING(dbo.Material_Trans.Lot, 0, CHARINDEX('-', dbo.Material_Trans.Lot))
谢谢大家!
我已经尝试了IIF
,它在SQL中作为无效语句失败。
2条答案
按热度按时间bvuwiixz1#
可以对生成的列创建唯一约束条件。例如:
结果:
请参见db<>fiddle中的运行示例。
vojdkbi02#
一般来说,
CASE
表达式比IIF()
更好,因为IIF()
不是ansi标准的一部分,但是COALESCE()
+NULLIF()
也可以在这里工作,而且可能更有效:CASE
表达式如下所示: