Oracle10g 如何将数字列复制到带有前导和尾随零的VARCHAR列

Oracle10g 如何将数字列复制到带有前导和尾随零的VARCHAR列,oracle10g,Oracle10g,我试图将Number列复制到VARCHAR列,但它会删除前导零和尾随零。我尝试了下面的更新SQL UPDATE Employee SET Salary_char = TO_CHAR(salary_num); 但它需要删除前导零和尾随零。如果该值为0.20,则会持续。2 如何避免这种情况。您需要为调用to_char()提供合适的 UPDATE Employee SET Salary_char = TO_CHAR(salary, '9999990.00') 有足够多的前导9以允许在原始列中获得

我试图将Number列复制到VARCHAR列,但它会删除前导零和尾随零。我尝试了下面的更新SQL

UPDATE Employee  SET Salary_char = TO_CHAR(salary_num);
但它需要删除前导零和尾随零。如果该值为0.20,则会持续。2
如何避免这种情况。

您需要为调用
to_char()
提供合适的

UPDATE Employee SET Salary_char = TO_CHAR(salary, '9999990.00')

有足够多的前导9以允许在原始列中获得最高值。

下面的更新对我很有用。它会按照varchar列中的状态更新number列值

UPDATE Employee  SET Salary_char = TO_NUMBER(salary_num);

0.20和0.2是相同的数字。如果要在字符串版本中使用特定格式,则需要将其作为第二个参数提供给
to_char()
。但是,您需要固定数量的前导零和尾随零-如果值小于1,是否只需要前导零?始终保留两位小数?从返回99.00的dual中选择TO_CHAR(99.0,'999999 0.00'),但我希望值保持原样,即在本例中为99.0。是否希望99变为99.0,但99.9变为99.90?这似乎很不寻常。如果要设置货币金额的格式,则不需要固定的小数位数。99.99怎么样?这是保持不变还是变成99.990?等等,我想你可能也很困惑。在前面的注释中,
to_char()
的第一个参数是一个数字。不管你在你的声明中写的是99、99.0、99.00、0099.000还是其他什么。这纯粹是一个数字。想要它“原样”并不意味着什么。表中的薪资值也只是数字。当您查询表并显示结果时,您的客户机可能会将它们显示为格式化字符串,但这对于您运行的实际语句是不可见的。它是另一个敏感的数字,我希望它是从数字列开始的,后面有前导零。若它的值为0.30,那个么它在新的VARCHAR列中应该是相同的。