我在SQL服务器上有这一行查询,并希望在Oracle中进行转换。有人请提供一些指针吗?
CAR_CD CAR_YR CAR_MONTH CAR_SEQ
LXR 2017 12 1234
我希望得到这样的结果,在ORACLE数据库中使用下面的查询,而不是在SQWL中。
LXR1712001234
CAR_CD + SUBSTRING(CAST(CAR_YR AS VARCHAR(4)),3,2) + CAR_MONTH + RIGHT(REPLICATE('0',6) + CAST(CAR_SEQ AS VARCHAR(6)),6) AS CAR_NUMBER,
答案 0 :(得分:1)
使用http://www.sqlines.com/online
并用+
替换concat运算符||
:
SGTC_CD ||
SUBSTR(TO_CHAR(SG_FY(4)),3,2) ||
SG_MONTH || SUBSTR(RPAD('0', LENGTH('0') *6, '0') ||
TO_CHAR(SG_SEQ(6)),
GREATEST(-LENGTH(RPAD('0', LENGTH('0') *6, '0') ||
TO_CHAR(SG_SEQ AS VARCHAR2(6))),-6))
答案 1 :(得分:1)
使用SUBSTR
和LPAD
:
SELECT CAR_CD
|| SUBSTR( CAR_YR, -2 ) -- or SUBSTR( CAR_YR, 3, 2 )
|| CAR_MONTH -- or LPAD( CAR_MONTH, 2, '0' ) for a zero-padded string.
|| LPAD( CAR_SEQ, 6, '0' ) AS Car_number
FROM your_table
但是,您最好将年份和月份列转换为单个DATE
数据类型,然后就可以执行以下操作:
SELECT CAR_CD
|| TO_CHAR( CAR_YEAR_MONTH_DATE, 'YYMM' ) -- or 'YYFMMM' without leading zero for month
|| LPAD( CAR_SEQ, 6, '0' ) AS Car_number
FROM your_table
答案 2 :(得分:1)
SELECT CAR_CD || SUBSTR(CAR_YR,-2) || CAR_MONTH || LPAD(CAR_SEQ,6,'0') FROM yourtable;
试试这个。