在 Oracle 中反转数字 SQL

Reversing numbers in Oracle SQL

我正在想办法使第二个 s_pin returns 的内容相反。所以"Coded Pin"需要反过来s_pin

SELECT s_last||', '|| s_first||LPAD(ROUND(MONTHS_BETWEEN(SYSDATE, s_dob)/12,0),22,'*' ) AS "Student Name and Age", s_pin AS "Pin", Reverse(s_pin) AS "Coded Pin"
FROM student
ORDER BY s_last;

输出将如下所示:

TO_NUMBER (REVERSE( '' || s_pin)) AS "Coded Pin" 应该适合你。如果不需要用Coded Pin计算,可以省略TO_NUMBER函数

参见 TO_NUMBER and REVERSE

的文档

p.s. 根据评论:请注意,使用 TO_CHAR (s_pin) 是更好的选择。谢谢!

您已经在使用 Oracle 支持的 REVERSE() 函数,但它仅适用于字符串,因此只需先将 s_pin 值转换为字符串即可:

SELECT s_last||', '|| s_first||LPAD(ROUND(MONTHS_BETWEEN(SYSDATE, s_dob)/12,0),22,'*' ) AS "Student Name and Age"
     , s_pin AS "Pin" 
     , REVERSE(TO_CHAR(s_pin)) AS "Coded Pin"
FROM student
ORDER BY s_last;

Oracle 的 reverse 函数接受 char,而不是 number,因此您必须转换它:

SELECT   s_last||', '|| s_first||LPAD(ROUND(MONTHS_BETWEEN(SYSDATE, s_dob)/12,0),22,'*' ) AS "Student Name and Age", 
         s_pin AS "Pin", 
         REVERSE(TO_CHAR(s_pin)) AS "Coded Pin"
FROM     student
ORDER BY s_last;

注意 REVERSE 是一个未记录的函数。如果您在您的应用程序中使用它,您将来可能会有风险,"IF" 此功能在您希望升级到的更高版本中被删除。而且很可能他们将来最终会被记录在案,谁知道呢。因此,使用它需要您自担风险。