SQL:检索存储在字符串中的ID

时间:2015-05-15 07:40:17

标签: sql sql-server

我对如何检索Id感到有点迷茫。我已经存储在像

这样的字符串中

Hi i am interested in sharing apartment or to rent all rooms please text me {PropertyId:43499}

我想要的部分是43499

如何在我的Sql-Server中实现此目的。

对我有用的解决方案,我编辑了我从Kavin Chakaravarthi得到的答案

DECLARE @string nvarchar(max)
SET @string = 'Hi i am interested in sharing apartment or to rent all rooms please text me {PropertyId:43499}'
select SUBSTRING(SUBSTRING(@string, CHARINDEX(':',@string) +1, DATALENGTH(@string)), 0,6)`

4 个答案:

答案 0 :(得分:1)

使用SQL Query你可以获得单独的id:

 declare @id varchar(max)='Hi i am interested in sharing apartment or to rent all rooms please text me {PropertyId:43499}'
 select @id=STUFF(@id,LEN(@id),1,'')
 select @id=SUBSTRING(@id,CHARINDEX(':',@id)+1,LEN(@id))
 select @id

输出:

 id
43499

答案 1 :(得分:1)

CREATE FUNCTION dbo.propertyidextract
(@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.propertyidextract(phrase) AS 'propertyid'
FROM yourtable;
GO

这会输出您的ID

propertyid
43499

SQL FIDDLE:http://sqlfiddle.com/#!6/4c22f/12/0

答案 2 :(得分:0)

如果使用C#,

您可以从字符串中取出最后N个文本(如果ID始终位于字符串的末尾)并使用SubString

如果使用sql-server

您也可以使用SubString,这是如何使用它的示例

http://www.techonthenet.com/sql_server/functions/substring.php

答案 3 :(得分:0)

这应该可以解决您的确切情况,如果搜索字符串的格式不同,则需要在此基础上进行构建。

declare @x varchar(100) = 'blah blah blah {PropertyId:43499}'
SELECT RIGHT(@x, LEN(@x) - CHARINDEX(':', @x))
SELECT LEFT(@x, LEN(@x) - 1)
/* or LEFT(@x, LEN(@x) - CHARINDEX('}', @x)) */