我正在嘗試以下操作,但我不知道爲什麼會得到不同的結果。從字符串變量(TSQL)中查找字符索引
SELECT CHARINDEX(' ', 'FIRSTNAME LASTNAME') -- returns 10 (expected output)
DECLARE @FULLNAME VARCHAR = 'FIRSTNAME LASTNAME'
SELECT CHARINDEX(' ', @FULLNAME) -- returns 0
我正在嘗試以下操作,但我不知道爲什麼會得到不同的結果。從字符串變量(TSQL)中查找字符索引
SELECT CHARINDEX(' ', 'FIRSTNAME LASTNAME') -- returns 10 (expected output)
DECLARE @FULLNAME VARCHAR = 'FIRSTNAME LASTNAME'
SELECT CHARINDEX(' ', @FULLNAME) -- returns 0
只需修改VARCHAR
TO VARCHAR(50)
。
FROM MSDN
當在數據定義或變量聲明語句中指定n,則默認長度爲1
'FIRSTNAME LASTNAME' 被截斷爲 'F',這是爲什麼你得到0.
這是什麼數據庫引擎? 'DECLARE @FULLNAME VARCHAR ='FIRSTNAME LASTNAME''實際上是否工作? –
Microsoft SQL Server,是的它的工作原理。您可以在一行中進行聲明和分配。問題在於未明確指定VARCHAR的n值 - 在下面回答。 – DiDi