2014-06-06 97 views
-1

我正在嘗試以下操作,但我不知道爲什麼會得到不同的結果。從字符串變量(TSQL)中查找字符索引

SELECT CHARINDEX(' ', 'FIRSTNAME LASTNAME') -- returns 10 (expected output) 

DECLARE @FULLNAME VARCHAR = 'FIRSTNAME LASTNAME' 
SELECT CHARINDEX(' ', @FULLNAME) -- returns 0 
+0

這是什麼數據庫引擎? 'DECLARE @FULLNAME VARCHAR ='FIRSTNAME LASTNAME''實際上是否工作? –

+0

Microsoft SQL Server,是的它的工作原理。您可以在一行中進行聲明和分配。問題在於未明確指定VARCHAR的n值 - 在下面回答。 – DiDi

回答

1

只需修改VARCHAR TO VARCHAR(50)

FROM MSDN

當在數據定義或變量聲明語句中指定n,則默認長度爲1

'FIRSTNAME LASTNAME' 被截斷爲 'F',這是爲什麼你得到0.

0

很肯定這是不是有效

DECLARE @FULLNAME VARCHAR = 'FIRSTNAME LASTNAME' 

嘗試

DECLARE @FULLNAME VARCHAR 
SET @FULLNAME = 'FIRSTNAME LASTNAME' 
+0

DECLARE @FULLNAME VARCHAR ='FIRSTNAME LASTNAME'正常工作,聲明和分配可以在一行中完成。 – DiDi

+0

一直做這個太久了,你的正確,你可以自SQL 2008以來。 – kmo