sunpop Ответов: 7

Функция разбивает строку в SQL сервере


В соль-сервер, я получаю значение параметра, @кодовым названием Как "1023 - Hydrabad" от ASP.NET

ie, @codeName = "1023 - Hydrabad"

Я хочу только Hydrabad. Как его разделить?

7 Ответов

Рейтинг:
56

Matej Hlatky

Вы можете использовать функции SQL Server SUBSTRING и CHARINDEX:

DECLARE @codeName VarChar(100)
SET @codeName = '1023 - Hydrabad'

SELECT SUBSTRING(@codeName, CHARINDEX('-', @codeName) + 2, 100)

или используйте соответствующие аналогичные методы .NET в своем коде позади.


Jenas929

Как сохранить 'Hydrabad' в другую переменную?

Рейтинг:
2

Phanindra Baddula

сначала у создать функцию

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


Рейтинг:
2

contif

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


Разделитель произвольной длины


Рейтинг:
0

Dholakiya Ankit

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




это прекрасно работает для меня


Рейтинг:
0

senthil kumar - 2185

Dim paramval As String = "1023 - Hydrabad"
        Dim paramvalue() As String = paramval.Split("-")
       @codeName = paramvalue(1).ToString()


Рейтинг:
0

Sagar Tajpara

строка str = "1023 - Hydrabad";
string[] strArray = str.Split('-');


Рейтинг:
0

_Asif_

Я думаю, что лучшим решением для таких случаев является использование регулярных выражений. Проверьте ниже статью проекта кода.


[^]