Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I have below table:

+----------+----+
|customerID|name|
+----------+----+
|         1| Ram|
+----------+----+

I want output as (All possible value of column-value):

+----------+----+
|customerID|name|
+----------+----+
|         1| Ram|
|         2| Arm|
|         3| Mar|
|         .| ...|
|         .| ...|
+----------+----+
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
275 views
Welcome To Ask or Share your Answers For Others

1 Answer

Split string, explode array and use cross join with itself to find all possible combinations:

 with s as (select col 
              from (select explode( split(lower('Ram'),'')) as col)s 
             where col <>''
           ) 
 select concat(upper(s1.col), s2.col, s3.col) as name, 
        row_number() over() as customerId
   from s s1 
        cross join s s2 
        cross join s s3
where s1.col<>s2.col and s2.col<>s3.col;

Result:

OK
name    customerid
Mam     1
Mar     2
Mrm     3
Mra     4
Ama     5
Amr     6
Arm     7
Ara     8
Rma     9
Rmr     10
Ram     11
Rar     12
Time taken: 185.638 seconds, Fetched: 12 row(s)

Without last WHERE s1.col<>s2.col and s2.col<>s3.col you will get all combinations like Aaa, Arr, Rrr, etc.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...