Функция разбивает строку в SQL сервере
В соль-сервер, я получаю значение параметра, @кодовым названием Как "1023 - Hydrabad" от ASP.NET
ie, @codeName = "1023 - Hydrabad"
Я хочу только Hydrabad. Как его разделить?
Вы можете использовать функции SQL Server SUBSTRING и CHARINDEX:
DECLARE @codeName VarChar(100) SET @codeName = '1023 - Hydrabad' SELECT SUBSTRING(@codeName, CHARINDEX('-', @codeName) + 2, 100)
Как сохранить 'Hydrabad' в другую переменную?
сначала у создать функцию
ALTER FUNCTION [dbo].[Split] ( @String NVARCHAR(4000), @Delimiter NCHAR(1) ) RETURNS TABLE AS RETURN ( WITH Split(stpos,endpos) AS( SELECT 0 AS stpos, CHARINDEX(@Delimiter,@String) AS endpos UNION ALL SELECT endpos+1, CHARINDEX(@Delimiter,@String,endpos+1) FROM Split WHERE endpos > 0 ) SELECT 'Id' = ROW_NUMBER() OVER (ORDER BY (SELECT 1)), 'Data' = SUBSTRING(@String,stpos,COALESCE(NULLIF(endpos,0),LEN(@String)+1)-stpos) FROM Split ) --then u can use this function like this select * from dbo.Split(string,'-') where id=1
CREATE FUNCTION [dbo].[fnSplitString] ( @string VARCHAR(MAX), @delimiter VARCHAR(MAX) ) RETURNS @output TABLE(splitdata VARCHAR(MAX)) BEGIN DECLARE @Xml XML SET @Xml = CAST(('<a>'+REPLACE(@string,@delimiter,'</a><a>')+'</a>') AS XML) INSERT INTO @output (splitdata) SELECT ltrim(rtrim(A.value('.', 'VARCHAR(MAX)'))) FROM @Xml.nodes('a') AS FN(a) RETURN END
DECLARE @LongSentence VARCHAR(MAX) DECLARE @FindSubString VARCHAR(MAX) SET @LongSentence = 'SQL,SERVER,TUTORIAL' SET @FindSubString = ',' SELECT (LEN(@LongSentence) - LEN(REPLACE(@LongSentence, @FindSubString, ''))) CntReplacedChars, (LEN(@LongSentence) - LEN(REPLACE(@LongSentence, @FindSubString, '')))/LEN(@FindSubString) CntOccuranceChars
Dim paramval As String = "1023 - Hydrabad" Dim paramvalue() As String = paramval.Split("-") @codeName = paramvalue(1).ToString()
строка str = "1023 - Hydrabad";
string[] strArray = str.Split('-');
Я думаю, что лучшим решением для таких случаев является использование регулярных выражений. Проверьте ниже статью проекта кода.
[^]