Bjö*_*n C 0 sql sql-server string sql-server-2008
我正在尝试CONCAT在SQL Server 2008中使用功能。该功能不起作用,因为该版本不提供该功能:
$sql = "SELECT DISTINCT(CONCAT(Project, '-', FLOOR_ID)) AS value FROM dbo.IMP_MODEL_GEOMETRY WHERE Project LIKE '%".$test_term."%'";
Run Code Online (Sandbox Code Playgroud)
当我是Google的“操作方法”时,我在这里找到了一条用+代替的帖子。所以我尝试了:
$sql = "SELECT DISTINCT( (Project + '-' + FLOOR_ID) ) AS value FROM dbo.IMP_MODEL_GEOMETRY WHERE Project LIKE '%".$test_term."%'";
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个信息:
[Microsoft] [用于SQL Server的ODBC驱动程序17] [SQL Server]将nvarchar值'22067-'转换为数据类型int时转换失败。
那么,我该如何解决呢?
您正在混合+操作的数据类型。在这种情况下,SQL Server将尝试将VARCHAR表达式转换为INT(这是根据数据类型优先级规则完成的)。您需要将INT显式转换为VARCHAR:
SELECT COALESCE(Project, '')
+ '-'
+ COALESCE(CAST(FLOOR_ID AS VARCHAR(11)), '')
Run Code Online (Sandbox Code Playgroud)
CONCAT如果参数为NULL,则函数不会返回NULL。COALESCE(..., '')必须匹配行为。