2 回答

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
根據(jù)您最后的錯(cuò)誤消息,當(dāng)您嘗試完整的原始查詢時(shí):
SQLSTATE[22001]:[Microsoft][SQL Server 的 ODBC 驅(qū)動(dòng)程序 13][SQL Server]字符串或二進(jìn)制數(shù)據(jù)將被截?cái)?/strong>。(SQL: INSERT INTO [dbo].[tbl_rfaccount] ([id] ,[password] ,[accounttype] ,[birthdate] ,[BCodeTU] ,[Email]) VALUES ((CONVERT(binary, user01)), (CONVERT (二進(jìn)制,密碼01)),0,2011-11-11 00:00:00,1,user@example.com)
您需要指定函數(shù)中字段的長(zhǎng)度CONVERT
。
不是CONVERT(binary, user01)
,但是CONVERT(binary(16), user01)
。指定與目標(biāo)表中定義的列相同的長(zhǎng)度。
如果不指定長(zhǎng)度,則在某些情況下假定為 1,在某些情況下假定為 30。
CONVERT
如果未指定,該函數(shù)假定長(zhǎng)度為 30。
--?CONVERT?Syntax:??CONVERT?(?data_type?[?(?length?)?]?,?expression?[?,?style?]?)...
長(zhǎng)度
對(duì)于允許用戶指定長(zhǎng)度的數(shù)據(jù)類型,指定目標(biāo)數(shù)據(jù)類型的長(zhǎng)度的可選整數(shù)。默認(rèn)值為 30。
這是一個(gè)簡(jiǎn)單的例子,演示了正在發(fā)生的事情:
SELECT ????CONVERT(binary(16),?'1234567890123456')?AS?Bin16 ????,CONVERT(binary,?'1234567890123456')?as?BinNoLength ;
結(jié)果:
+------------------------------------+----------------------------------------------------------------+
| Bin16? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | BinNoLength? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
+------------------------------------+----------------------------------------------------------------+
| 0x31323334353637383930313233343536 | 0x313233343536373839303132333435360000000000000000000000000000 |
+------------------------------------+----------------------------------------------------------------+
因此,當(dāng)您未在 中指定長(zhǎng)度時(shí)CONVERT,您將得到結(jié)果binary(30)。
當(dāng)您嘗試將此 long 值插入到表中的列中時(shí),您的列不夠長(zhǎng),無(wú)法存儲(chǔ)它,因此 long 值被截?cái)?,并且您?huì)看到此錯(cuò)誤消息。

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
你能試試這個(gè)嗎
return DB::connection('sqlsrv_rfo_user')
->table('dbo.tbl_rfaccount')
->insert([
'Email' => $email,
'id' => DB::raw(`CONVERT(binary,$username)`),
'password' => DB::raw(`CONVERT(binary,$password)`),
'birthdate' => $birthday,
'accounttype' => 0,
'BCodeTU' => 1
]);
- 2 回答
- 0 關(guān)注
- 195 瀏覽
添加回答
舉報(bào)