我正在尝试对表进行SELECT *查询,它具有我需要用来过滤数据的uniquerparameter列...并且出现此错误:
SQLSTATE[42000]: [Microsoft][ODBC Driver 13 for SQL Server][SQL
Server]Conversion failed when converting from a character string to
uniqueidentifier. (SQL: select * from [vw_DigitalLibrary_History] where
[ManualBook_SectionParagraphGlobalID] = '588237FB-7A69-40F8-AE85-
9596EEF44894') (View: C:\inetpub\wwwroot\digital-
library\resources\views\admin\going_live.blade.php)
此uniqueidentifier列:ManualBook_SectionParagraphGlobalID
使用laravel生成的同一查询及其错误:
select * from [vw_DigitalLibrary_History] where
[ManualBook_SectionParagraphGlobalID] = '588237FB-7A69-40F8-AE85-
9596EEF44894'
在SQL Management Studio上像魅力一样工作
我已经尝试过了:
$FutureHist = App\History::where('ManualBook_SectionParagraphGlobalID', $split[1])->limit(1)->get();
试图转换它,但我认为它以字符串形式到达SQL Server
$split = explode("=", $Future[0]["Filter"]);
$FutureHist = App\History::where('ManualBook_SectionParagraphGlobalID', TRY_CONVERT($split[1], uniqueidentifier))->limit(1)->get();
我希望$ FutureHist变量能得到结果,但是我还没有找到绕过此错误的方法。
解决方案: 对于面临同样错误的可怜灵魂,您可以按照dparoli所说的去做,但是''部分存在一些问题。这就是您应该如何处理
$FutureHist = App\History::whereRaw("ManualBook_SectionParagraphGlobalID = CONVERT(UNIQUEIDENTIFIER, ".$split[1].")")
->limit(1)->get();
答案 0 :(得分:1)
如果我正确理解,您可以尝试使用whereRaw()和演员表,例如:
App\History::whereRaw("ManualBook_SectionParagraphGlobalID = CONVERT(UNIQUEIDENTIFIER, '588237FB-7A69-40F8-AE85-9596EEF44894')")
->limit(1)->get();
或使用变量扩展:
App\History::whereRaw("ManualBook_SectionParagraphGlobalID = CONVERT(UNIQUEIDENTIFIER, '$split[1]')")
->limit(1)->get();