'How to do conditioned substring in SQL Server
I have a table [dbo].[LogActionItems] which looks like:
ItemParam
Jméno = [Výber_s_orezem3], Název pole "Od" = [OD], Název pole "Do" = [DO], Interval "Od" = [1.10.2016], Interval "Do" = [31.10.2016], Orezat = [True], Podmínka = [OSCIS='26767'], Vstupní tabulka = [CELPRAC], Výstupní tabulka = [tmp_CELPRAC_pomoc],
I want to extract the string behind "Jmeno =" without the "[]". So the expected output would be value "Vyber_s_orezem3".
Solution 1:[1]
Please try the following solution.
It will work starting from SQL Server 2017 onwards.
SQL
-- DDL and sample data population, start
DECLARE @tbl TABLE (ID INT IDENTITY PRIMARY KEY, ItemParam NVARCHAR(MAX));
INSERT INTO @tbl (ItemParam) VALUES
(N'Jméno = [Výber_s_orezem3], Název pole "Od" = [OD], Název pole "Do" = [DO], Interval "Od" = [1.10.2016], Interval "Do" = [31.10.2016], Orezat = [True], Podmínka = [OSCIS=''26767''], Vstupní tabulka = [CELPRAC], Výstupní tabulka = [tmp_CELPRAC_pomoc],');
-- DDL and sample data population, end
SELECT ID, value
, Result = TRIM(' []' FROM RIGHT(value, LEN(value) - pos))
FROM @tbl
CROSS APPLY STRING_SPLIT(ItemParam, ',')
CROSS APPLY (SELECT CHARINDEX('=', value)) AS t(pos)
WHERE value LIKE N'Jméno%';
Output
+----+---------------------------+-----------------+
| ID | value | Result |
+----+---------------------------+-----------------+
| 1 | Jméno = [Výber_s_orezem3] | Výber_s_orezem3 |
+----+---------------------------+-----------------+
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Yitzhak Khabinsky |
