SELECT part of string [duplicate] - sql

This question already has answers here:
Split string and take last element
(15 answers)
Closed 6 years ago.
i have a string like that $TAOVV*NK_LFE_11029_41586 and i want to select only 11029, the number between _. I try with
substring([OrderCode],PatIndex('%_[0-9]_%', [OrderCode]),LEN([OrderCode]))
but not extract only that number.How i can define the length that change and it's not always of 5 characters as in this example?

You need to do the substring twice..
Try with this
declare #code nvarchar(100)='$TAOVV*NK_LFE_11029_41586'
select substring(substring(#code,PatIndex('%_[0-9]_%', #code)+1,LEN(#code)),1,charindex('_',substring(#code,PatIndex('%_[0-9]_%', #code)+1,LEN(#code)))-1)

Related

MSSQL - substring a value between other values [duplicate]

This question already has answers here:
Turning a Comma Separated string into individual rows
(16 answers)
Closed 2 years ago.
NOIDEHOB_NOIDE1_4321-123
i want to create a querie that extract the following values from the example above:
NOIDEHOB
NOIDE1
4321-123
I need to base the query on the sign _. The values NOIDEHOB, NOIDE1 and 4321-123 are dynamic and the length will vary. There will never be any other _ sign in the string.
Any suggestions?
You can use string_split():
select s.value
from string_split('NOIDEHOB_NOIDE1_4321-123', '_') s

Regex in Oracle- put a string after each 5 characters [duplicate]

This question already has an answer here:
Reference - What does this regex mean?
(1 answer)
Closed 3 years ago.
I have to put a string after every 5 characters in a given string (varchar2).
Given string can have different length.
I already solved it by a loop using substrings.
Is there any way i could reach the goal using REGEXP in Oracle DB?
You can use REGEXP_REPLACE to replace every 5 characters with those 5 characters followed by another string. For example:
SELECT REGEXP_REPLACE('ABCDE12345FGHIJ67890KL', '(.{5})', '\1*') FROM DUAL
Output:
ABCDE*12345*FGHIJ*67890*KL
Demo on dbfiddle

How to remove leading 0 from string in Oracle SQL? [duplicate]

This question already has answers here:
Removing leading zeros from varchar sql developer
(5 answers)
Closed 4 years ago.
I have a string looks like this.
00000000004000000
00000000001100000
00000001432000000
00000000167700000
I want to remove all leading leading 0 from that column, how can I achieve that?
You can use the TRIM function:
SELECT TRIM(LEADING '0' FROM col)
this will work:
select ltrim(colname,'0') from table_name;

How do i remove character in a column data using sql [duplicate]

This question already has answers here:
removing characters from field in MS Access database table
(4 answers)
Closed 8 years ago.
I have table with data like
samcol
60.78686
46.0000
45.43240
56.3453450
And i'm trying to remove '.' before decimal places. And table should looks like
samcol
6078686
460000
4543240
563453450
Use Replace String function to replace all the . with empty string
Select Replace(samcol,'.','') from yourtable

How to make column values more presentable [duplicate]

This question already has answers here:
How to get rightmost 10 places of a string in oracle
(5 answers)
Closed 8 years ago.
I have a table containing the following fields:
version
id
set_value
marker
I want to write a SELECT statement to query them. However, the values in the column marker are not easily readable. I would like to present a substring of that column. My question is how do I do this?
You can use this:
SELECT version,
id,
set_value,
SUBSTR(marker, 1, 10) AS marker
FROM ...
to select just the first ten characters of marker, and still have the resulting column be named "marker".
(See http://docs.oracle.com/cd/B28359_01/server.111/b28286/functions169.htm.)
You can use the substr function.