今天写了下面这一段SQL语句, 在写之前总觉得有更简便的方法, 可就是没有想出来:

SELECT
   REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
      REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(TABLE_NAME,’0′,’#'),
         ’1′,’#') ,’2′,’#') ,’3′,’#') ,’4′,’#')
             ,’5′,’#') ,’6′,’#') ,’7′,’#') ,’8′,’#') ,’9′,’#')  PATTERN_NAME
FROM USER_TABLES

    下班时坐地铁, 突然想到了Translate函数, 原来可以这么简单:

SELECT
   TRANSLATE(TABLE_NAME,’0123456789′,’##########’) PATTERN_NAME
FROM USER_TABLES

    我写这个SQL是用来找出一些表结构应当相同的表, 最终的SQL应当如下:

SELECT TABLE_NAME FROM USER_TABLES
WHERE TRANSLATE(TABLE_NAME,’0123456789′,’##########’) IN
(SELECT
   TRANSLATE(TABLE_NAME,’0123456789′,’##########’) PATTERN_NAME
FROM USER_TABLES
GROUP BY TRANSLATE(TABLE_NAME,’0123456789′,’##########’)
HAVING COUNT(*) > 1)

    看来选择最佳的方法是很必要的.