ITPub博客

首页 > 数据库 > Oracle > [20240928]10,16进制转10,16进制的sql脚本.txt

[20240928]10,16进制转10,16进制的sql脚本.txt

原创 Oracle 作者:lfree 时间:2024-09-29 20:57:31 0 删除 编辑

[20240928]10,16进制转10,16进制的sql脚本.txt

--//朋友建议提的建议,x可以放在前面或者后面表示16进制,放在后面的好处不用移动到前面输入x,修改完善代码。
$ cat hd.sql
-- Copyright 2023 lfree. All rights reserved.
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms and conditions.
--------------------------------------------------------------------------------
--
-- Name:        hd.sql
-- Purpose:     display hex or dec to hex or dec
--
-- Author:      lfree
-- Usage:
--     @ hd <hex|dec>
--
--------------------------------------------------------------------------------

define vc=&1

column text format a20
column hex_status format a10
SELECT text
      ,n10
      ,REPLACE (TO_CHAR (n10, LPAD ('x', 16, 'x')), ' ') c16
      ,hex_status
  FROM (SELECT '&&vc' text
--             ,DECODE ( hex_status ,'hex', TO_NUMBER ( SUBSTR ('&&vc', INSTR (LOWER ('&&vc'), 'x',-1) + 1) ,'xxxxxxxxxxxxxxxx') ,'dec', TO_NUMBER ('&&vc') ,0) n10
              ,DECODE ( hex_status ,'hex', TO_NUMBER ( replace (lower('&&vc'), 'x') ,'xxxxxxxxxxxxxxxx') ,'dec', TO_NUMBER ('&&vc') ,0) n10
              ,hex_status
          FROM (SELECT CASE
                          WHEN REGEXP_LIKE (LOWER ('&&vc'), '^[0-9]+$') THEN 'dec'
                          WHEN REGEXP_LIKE (LOWER ('&&vc') ,'^0?[xX]?[0-9a-f]+[xX]?$') THEN 'hex'
                          ELSE 'other'
                       END AS Hex_Status
                  FROM DUAL));

--//测试代码如下:
SCOTT@book01p> @ hd x12
TEXT                                   N10 C16               HEX_STATUS
-------------------- --------------------- ----------------- ----------
x12                                     18 12                hex

SCOTT@book01p> @ hd 12x
TEXT                                   N10 C16               HEX_STATUS
-------------------- --------------------- ----------------- ----------
12x                                     18 12                hex

SCOTT@book01p> @ hd 0x12x
TEXT                                   N10 C16               HEX_STATUS
-------------------- --------------------- ----------------- ----------
0x12x                                   18 12                hex

SCOTT@book01p> @ hd x12x
TEXT                                   N10 C16               HEX_STATUS
-------------------- --------------------- ----------------- ----------
x12x                                    18 12                hex

SCOTT@book01p> @ hd x12
TEXT                                   N10 C16               HEX_STATUS
-------------------- --------------------- ----------------- ----------
x12                                     18 12                hex

SCOTT@book01p> @ hd x12x12
TEXT                                   N10 C16               HEX_STATUS
-------------------- --------------------- ----------------- ----------
x12x12                                   0 0                 other

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3034864/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7970834