【问题标题】:What does '%' mean in SQL?'%' 在 SQL 中是什么意思?
【发布时间】:2025-11-28 15:35:02
【问题描述】:

我继承了一些 SQL 代码,其中一部分代码如下:

    CASE WHEN 
    (CAST(CAST(b.xx AS numeric(11, 6)) 
            * CAST(a.ratio AS numeric(11, 6)) AS decimal(10, 0)) % a.mktcoupons =0) 
       THEN CAST((CAST(b.xx AS numeric(11, 6)) * 
            CAST(a.ratio AS numeric(11, 6))) / a.mktcoupons AS decimal(10, 0)) 
    ELSE 
    CAST(( CAST(b.xx AS numeric(11, 6)) 
            * CAST(a.ratio AS numeric(11, 6))) / a.mktcoupons AS decimal(10, 0)) 
    + (CAST(CAST(b.xx AS numeric(11, 6)) 
        * CAST(a.ratio AS numeric(11, 6)) AS decimal(10, 0)) % a.mktcoupons) 
    END AS yy

我理解 'case when A then B else C end' 的一般表达。但是,我很难弄清楚“%”是什么意思?我检查了“mktcoupons”,“mktcoupon”中没有零值。任何的想法?谢谢!

【问题讨论】:

  • modulo操作。
  • 这称为模运算。 Here您可以找到更多详细信息。这是一个基本的编程运算符,在除法后返回余数。
  • ... 有时称为“余数”运算符 - 它在执行除法运算后给出余数。
  • 为什么这些 cmets 而不是答案?
  • @BrianBall 因为一行答案不应该是答案,而是 cmets。

标签: sql sql-server


【解决方案1】:

这是一个模除法。 看这里:https://msdn.microsoft.com/de-de/library/ms190279.aspx

【讨论】:

  • 感谢链接非常有用。示例“SELECT 38 / 5 AS Integer, 38 % 5 AS Remainder”说明了一切!!
【解决方案2】:

如果它在数学运算中,它最有可能是modulo

如果它用在字符串中,它基本上意味着“任意数量的任意字符”。

【讨论】: