Discussions
Categories
- 196.8K All Categories
- 2.2K Data
- 235 Big Data Appliance
- 1.9K Data Science
- 449.9K Databases
- 221.6K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 549 MySQL Community Space
- 478 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3K ORDS, SODA & JSON in the Database
- 532 SQLcl
- 4K SQL Developer Data Modeler
- 186.9K SQL & PL/SQL
- 21.3K SQL Developer
- 295.5K Development
- 17 Developer Projects
- 138 Programming Languages
- 292.1K Development Tools
- 104 DevOps
- 3.1K QA/Testing
- 645.9K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 154 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.1K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 17 Java Essentials
- 158 Java 8 Questions
- 85.9K Java Programming
- 79 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.2K Java SE
- 13.8K Java Security
- 203 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 401 LiveLabs
- 37 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.6K Other Languages
- 2.3K Chinese
- 171 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 230 Portuguese
SQL select

arizio
Member Posts: 58 Blue Ribbon
Hi all,
I need an help for a SQL query.
I have 2 UNIXTIME dates
D1:1146767400 (Thu, 4 May 2006 18:30:00 UTC)
D2:1146768300 (Thu, 4 May 2006 18:45:00 UTC)
I need now to create the string D3 which has the char Ni only if Ni is both in D1 and D2 --> resulting D3: "114676?????"
Thanks,
Riccardo
I need an help for a SQL query.
I have 2 UNIXTIME dates
D1:1146767400 (Thu, 4 May 2006 18:30:00 UTC)
D2:1146768300 (Thu, 4 May 2006 18:45:00 UTC)
I need now to create the string D3 which has the char Ni only if Ni is both in D1 and D2 --> resulting D3: "114676?????"
Thanks,
Riccardo
Best Answer
-
Hi, Riccardo,
If d1 and d2 are NUMBERs, start by using TO_CHAR to convert them to strings.
Assuming d1 and d2 are strings:WITH test_data AS ( select '1146767400' AS d1 , '1146768300' AS d2 FROM dual ) SELECT RPAD ( MAX (SUBSTR (d1, 1, LEVEL)) , LENGTH (d1) , '?' ) FROM test_data WHERE SUBSTR (d1, 1, LEVEL) = SUBSTR (d2, 1, LEVEL) CONNECT BY LEVEL <= LENGTH (d1) ;
I feel there must be a better way.
Answers
-
Hi, Riccardo,
If d1 and d2 are NUMBERs, start by using TO_CHAR to convert them to strings.
Assuming d1 and d2 are strings:WITH test_data AS ( select '1146767400' AS d1 , '1146768300' AS d2 FROM dual ) SELECT RPAD ( MAX (SUBSTR (d1, 1, LEVEL)) , LENGTH (d1) , '?' ) FROM test_data WHERE SUBSTR (d1, 1, LEVEL) = SUBSTR (d2, 1, LEVEL) CONNECT BY LEVEL <= LENGTH (d1) ;
I feel there must be a better way. -
with tab as ( select '1146767400' col1 ,'1146768300' col2 from dual ) select column_value from tab t,xmltable(' declare function local:charbreak ( $arg as xs:string? ) as xs:string* { for $ch in string-to-codepoints($arg) return codepoints-to-string($ch) } ; declare function local:myfunc($seq as xs:string* , $seq1 as xs:string*) as xs:string { if(empty($seq) or ($seq[position()=1] != $seq1[position()=1]) or empty($seq1)) then "" else fn:concat( $seq[position()=1], local:myfunc($seq[position()!=1],$seq1[position()!=1]) ) }; local:myfunc( local:charbreak($str1),local:charbreak($str2) ) ' passing xmlelement(col1,t.col1) as "str1",xmlelement(col2,t.col2) as "str2")
An another way....can't say it is efficient
Ravi Kumar
This discussion has been closed.