1

我是 sql 的新手用户,需要帮助构建我正在处理的这个存储过程。我通过存储过程传递的值之一是 ClassCodeGroup,有时它小于 10。如何检查它是否在 sql 中小于 10?如果它小于 10 (1-9),那么我想添加一个前导 0,我认为应该是这样的。

select RIGHT('0' + convert (varchar(50), @ClassCodeGroup),2) 

任何帮助将不胜感激!谢谢

4

2 回答 2

2

一种简单的方法是

select RIGHT(CAST(,1000+@ClassCodeGroup AS char(8)),2) 

这样您就不必检查 的长度@ClassCodeGroup,因为您只需转换带有前导零的数字并仅考虑最后两位数字。只是将其更改为 CAST,因为我不确定 CONVERT 语法...

于 2013-08-12T14:47:57.317 回答
1

我是 sql 的新手用户,需要帮助构建这个存储过程我如何检查它在 sql 中是否小于 10

您可以IF .. THEN .. ELSE .. END IF在存储过程和触发器中使用:

IF @ClassCodeGroup < 10
THEN
  -- do something
ELSE
  -- do other thing
END IF;

如果它小于 10 (1-9) 那么我想添加一个前导 0

但是,对于这种特定情况,MySQL 提供了LPAD完全执行此操作的函数:

SELECT LPAD(@ClassCodeGroup, 2, '0')

请注意,将截断大于 99 的值。


最后,回到你最初的问题,你可以使用函数 IF

SELECT IF(@ClassCodeGroup>10, 
          @ClassCodeGroup, 
          CONCAT('0',@ClassCodeGroup)
         )

在这里,我使用该CONCAT函数在小于 10 的值前面加上前导“0”。请注意,在此版本中,大于或等于 10 的值保持不变

于 2013-08-12T15:01:35.117 回答