How to find multiple occurrence of particular string and fetch value in SQL Server

how to find second occurrence of a character in a string in sql server
find all occurrences of a substring in a string sql
how to count repeated characters in a string in sql
how to find number of occurrences of a character in a string in sql
find nth character in string sql
write a query to find the position of third occurrence of i in the given word mississippi
sql count occurrences of string in column
find first occurrence of character in string sql server

I have string with patterns and I wan to get values from each row in table.

For example:

declare @str = 'abcasd khgf [img]123-456-789" kh kshgdf sfj sfg [img]354-658-598" style asdlkafl'

Now I want to get only numbers after each [img] and store it into temp table.

Temp table output required

id   number
-----------------
1    123-456-789
2    354-658-598

string @str may contain more than 2 number and may have additional unwanted string.

CREATE FUNCTION dbo.udf_GetNumeric
(@strAlphaNumeric VARCHAR(256))
RETURNS VARCHAR(256)
AS
BEGIN
DECLARE @intAlpha INT
SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric)
BEGIN
WHILE @intAlpha > 0
BEGIN
SET @strAlphaNumeric = STUFF(@strAlphaNumeric, @intAlpha, 1, '' )
SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric )
END
END
RETURN ISNULL(@strAlphaNumeric,0)
END
GO

SELECT dbo.udf_GetNumeric('abcasd khgf [img]123-456-789" kh kshgdf sfj sfg [img]354-658-598" style asdlkafl') as 'Name'

Get the 2nd or 3rd occurrence of a value in a delimited string , You can use cross apply and the third parameter of charindex to get the position of the underscores. declare @T table ( Name_Level_Class_Section varchar(25) ) � In SQL Server, you can use the T-SQL CHARINDEX() function or the PATINDEX() function to find a string within another string. Here’s a quick overview of each function. The CHARINDEX() Function. This function accepts 3 arguments; the string to find, the string to search, and an optional start position. The CHARINDEX() syntax goes like this:

You can try this query. Here you need to use split function before executing this query make sure you have the split function.

DECLARE @str VARCHAR(100)
DECLARE @tempTable1 TABLE(ID INT,stringValue VARCHAR(250))
DECLARE @tempTable2 TABLE(ID INT IDENTITY,Numbers VARCHAR(250))

SET @str='abcasd khgf [img]123-456-789" kh kshgdf sfj sfg [img]354-658-598"'
INSERT INTO @tempTable1
SELECT * FROM  [dbo].[Split](@str,'[img]')

WHILE 0<(SELECT COUNT(*) from @tempTable1)
BEGIN
DECLARE @strVal varchar(250)=''
SELECT TOP 1 @strVal= stringValue from @tempTable1
DECLARE @intAlpha INT
SET @intAlpha = PATINDEX('%[^0-9.-]%', @strVal)
BEGIN
WHILE @intAlpha > 0
BEGIN
SET @strVal = STUFF(@strVal, @intAlpha, 1, '' )
SET @intAlpha = PATINDEX('%[^0-9.-]%', @strVal )
END
IF @strVal<>''
INSERT INTO @tempTable2 values(@strVal)
END
DELETE TOP (1) FROM @tempTable1
END
SELECT * FROM @tempTable2

Using PATINDEX to find and extract multiple occurrences of a , I'm struck up with extracting a particular string from a column in a real-time scenario. Here's a brief overview: I've a SQL table with 4 columns in it. Summary: in this tutorial, you will learn how to use the SQL Server CHARINDEX() function to search for a substring in a string. SQL Server CHARINDEX() function overview. SQL Server CHARINDEX() function searches for a substring inside a string starting from a specified location. It returns the position of the substring found in the searched

you can use XML to split the string into rows and then use REPLACE() to remove all extra special characters as much as needed to clean up your output.

DECLARE @str VARCHAR(MAX)  ='abcasd khgf [img]123-456-789" kh kshgdf sfj sfg [img]354-658-598" style asdlkafl'

SELECT 
    ROW_NUMBER() OVER(ORDER BY splitted) id 
,   splitted number
FROM (
    SELECT 
        REPLACE(REPLACE(LTRIM(RTRIM(m.n.value('.[1]','VARCHAR(8000)'))) , '[img]',''), '"','') splitted
    FROM (
        SELECT CAST('<Root><Keyword>' + REPLACE(REPLACE(@str,'&','&amp;') ,' ','</Keyword><Keyword>') + '</Keyword></Root>' AS XML) splitted
    ) D
    CROSS APPLY splitted.nodes('/Root/Keyword')m(n)
) C
WHERE 
    ISNUMERIC(LEFT(splitted, 3)) = 1 

SQL Server: Count Number of Occurrences of a Character or Word , SQL Server: Count Number of Occurrences of a Character or Word in a String. DECLARE @tosearch VARCHAR(MAX)='In' SELECT (DATALENGTH(@string)-DATALENGTH(REPLACE(@string,@tosearch,'')))/DATALENGTH(@tosearch) AS OccurrenceCount. One common question I see from many people new to T-SQL is how to find data in a string and extract it. This is a very common request, as our databases contain many strings.

Another possible approach, if you have SQL Server 2016 or higher, is to use STRING_SPLIT() function. The input string is splitted using ' ' as delimiter and only rows containing [img] are selected.

DECLARE @str varchar(max)
SET @str = 'abcasd khgf [img]123-456-789" kh kshgdf sfj sfg [img]354-658-598" style asdlkafl'

SELECT
   ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS Id,
   REPLACE(REPLACE([value], '[img]', ''), '"', '') AS [Number]
FROM STRING_SPLIT(@str, ' ')
WHERE CHARINDEX('[img]', [value]) = 1

Output:

Id  Number
1   123-456-789
2   354-658-598

SQL Substring function overview, SQL String functions; Understand the SQL Server SUBSTRING function; How The following example returns a portion of a character string starting at an truncated using CHARINDEX or PATINDEX function to get the date-time value. Similarly, the second column, the first two characters represents the� Grant table-level permissions in SQL Server. After launching and connecting to SQL Server Management Studio, create a new login and select the database that is connected to Chartio. Grant MySQL table and column permissions. You can grant a user table and column permissions in MySQL with GRANT statements. How to Select the Right Data Types

I'd try it like this

DECLARE @str VARCHAR(MAX)  ='abcasd khgf [img]123-456-789" kh kshgdf sfj sfg [img]354-658-598" style asdlkafl';

SELECT LEFT(imgResolved,CHARINDEX('"',imgResolved)-1) TheNumber
FROM (SELECT CAST('<x>' + REPLACE(SUBSTRING(@str,CHARINDEX('[img]',@str)+5,LEN(@str)),'[img]','</x><x>') + '</x>' AS XML)) A(x)
CROSS APPLY x.nodes('/x') B(img)
CROSS APPLY(SELECT img.value('text()[1]','nvarchar(max)')) C(imgResolved)

Searching a string for the last occurrence of a given , For instance if a string contains the full path to a file, such as : C:\Program Files\ Microsoft SQL Server\MSSQL\DATA\AdventureWorks_Data.mdf. This technique can be used to extract just the filename (i.e. the part after the last '\') : Converting row values in a table to a single concatenated string � Creating a comma� It is always recommended to thoroughly validate the input value. There are multiple ways to transform the data using the T-SQL SUBSTRING function. In a few cases, it is possible to transform using other SQL string functions. In some cases, volume of data, performance, and SQL Server version defines the options one over the other. That’s all

MySQL SUBSTRING() Function, Example. Extract a substring from a string (start at position 5, extract 3 characters ):. SELECT SUBSTRING("SQL Tutorial", 5, 3) AS ExtractString;. Try it Yourself �� Get the 2nd or 3rd occurrence of a value in a delimited string. Ask Question Browse other questions tagged sql-server sql-server-2008 or ask your own question.

REGEXP_SUBSTR — Snowflake Documentation, Default: 1 (the search for a match starts at the first character on the left) However, if the e (for “extract”) parameter is specified, REGEXP_SUBSTR returns the the A string with multiple occurrences of the word "the" and with extra -- blanks between words. In this case, the returned value should be the word after “the”. The way the question was stated the request was to pass a string and a search string and then get back a comma separated list of the starting positions for each occurrence of that search string.

SQL SERVER - Finding the Occurrence of Character in String, The challenge is about counting the number of occurrences of. SQL SERVER – Finding the Occurrence of Character in String. August 16 Here is quick example which provides you two different details. Click here to get free chapters (PDF) in the mailbox Please read the Leave a Reply Cancel reply� Hi, is it possible to search a string/value accross 1000's of tables and just display the table name and column name which it is in. I don't need to know every instance of the string/value only that I can find it in a given table name.

Comments
  • Oh no... please avoid loops if ever possible. And please avoid scalar functions. Both approaches are well known as speed killers...
  • please avoid loops... They are awfully slow and point to procedural thinking, while T-SQL demands for set-based approaches...
  • The idea is fine, but: 1) If you expect forbidden characters use (SELECT @str AS [*] FOR XML PATH('')) This will escape all forbidden characters implicitly. 2) Use the [img] as delimiter, otherwise you might find some other junk... 3) It is a bit dangerous to rely on ORDER BY splitted. This will not reflect the original order. And this can be done with less steps.
  • We don't know, if the internal sort order is important, but ORDER BY (SELECT 1) might return randomly. Better to use with v2016+ is OPENJSON (some details here)
  • @Shnugo Yes, you are right, with STRING_SPLIT ordering is difficult. OPENJSON is good option.