如何在SQL中对一个短语进行子串?

时间:2016-09-08 12:55:10

标签: sql sql-server dynamic-sql

我有一个这样的短语:

DECLARE @helloworld NVARCHAR(100),@partHello NVARCHAR(10)
SET @helloworld='HelloWorld=10&HelloSQL=20'

我想取'='和'&'之间的数字,我使用了这个陈述,但它不起作用......它返回:

10&

这是我使用的代码:

DECLARE @helloworld NVARCHAR(100),@partHello NVARCHAR(10)
SET @helloworld='HelloWorld=10&HelloSQL=20'

SET @partHello = 
SUBSTRING(@helloworld,CHARINDEX('=',@helloworld,0),CHARINDEX('&',@helloworld,0)-CHARINDEX('=',@helloworld,0))
PRINT @partHello

我希望它是动态的..如果有一个大于10的数字,那么它将占用所有数字。我希望它从'='开始,到'&'

结束

任何帮助?

3 个答案:

答案 0 :(得分:3)

试试这个:

SET @partHello = 
SUBSTRING(@helloworld,CHARINDEX('=',@helloworld,0)+1,CHARINDEX('&',@helloworld,0)-(CHARINDEX('=',@helloworld,0))-1)
PRINT @partHello

答案 1 :(得分:3)

我会使用以下内容:

SELECT SUBSTRING(@helloWorld,
   CHARINDEX('=',@helloworld,0)+1,
   CHARINDEX('&',@helloworld,0)-CHARINDEX('=',@helloworld,0)-1)

答案 2 :(得分:0)

有解决方案:

DECLARE @helloworld NVARCHAR(100),@partHello NVARCHAR(10)
SET @helloworld='HelloWorld=320&HelloSQL=20'

   SET @partHello = 
SUBSTRING(@helloworld,CHARINDEX('=',@helloworld,0)+1,CHARINDEX('&',@helloworld,0) -(CHARINDEX('=',@helloworld,0)+1))
PRINT @partHello