SQL Server 2008 中的 CONCAT 函数替代项
CONCAT function alternative in SQL Server 2008
我正在尝试在 SQL Server 2008 中使用 CONCAT
函数。它不起作用,因为它在该版本中不可用:
$sql = "SELECT DISTINCT(CONCAT(Project, '-', FLOOR_ID)) AS value FROM dbo.IMP_MODEL_GEOMETRY WHERE Project LIKE '%".$test_term."%'";
当我在 google "How to" 时,我发现 post 这里说使用 +
代替。所以我尝试了:
$sql = "SELECT DISTINCT( (Project + '-' + FLOOR_ID) ) AS value FROM dbo.IMP_MODEL_GEOMETRY WHERE Project LIKE '%".$test_term."%'";
但我收到了这条消息:
[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Conversion failed when converting the nvarchar value ' 22067-' to data type int.
那么,我该如何解决呢?
您正在为 +
操作混合数据类型。在这种情况下 SQL 服务器将尝试将 VARCHAR 表达式转换为 INT(这是根据数据类型优先级规则完成的)。您需要将 INT 显式转换为 VARCHAR:
SELECT COALESCE(Project, '')
+ '-'
+ COALESCE(CAST(FLOOR_ID AS VARCHAR(11)), '')
如果参数为 NULL,CONCAT
函数不会 return NULL。 COALESCE(..., '')
需要匹配行为。
像这样将 Project
和 FLOOR_ID
转换为字符串 -
CAST(Project AS VARCHAR("MAX LENGTH OF PROJECT FIELD"))
与 FLOOR_ID
相同
尝试将 FLOOR_ID
转换为文本:
SELECT DISTINCT
Project + '-' + CAST(FLOOR_ID AS VARCHAR(MAX)) AS value
FROM dbo.IMP_MODEL_GEOMETRY
WHERE Project LIKE '%".$test_term."%'";
当前错误消息提到字符串 ' 22067-'
,这意味着 FLOOR_ID
是问题的根源。
我正在尝试在 SQL Server 2008 中使用 CONCAT
函数。它不起作用,因为它在该版本中不可用:
$sql = "SELECT DISTINCT(CONCAT(Project, '-', FLOOR_ID)) AS value FROM dbo.IMP_MODEL_GEOMETRY WHERE Project LIKE '%".$test_term."%'";
当我在 google "How to" 时,我发现 post 这里说使用 +
代替。所以我尝试了:
$sql = "SELECT DISTINCT( (Project + '-' + FLOOR_ID) ) AS value FROM dbo.IMP_MODEL_GEOMETRY WHERE Project LIKE '%".$test_term."%'";
但我收到了这条消息:
[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Conversion failed when converting the nvarchar value ' 22067-' to data type int.
那么,我该如何解决呢?
您正在为 +
操作混合数据类型。在这种情况下 SQL 服务器将尝试将 VARCHAR 表达式转换为 INT(这是根据数据类型优先级规则完成的)。您需要将 INT 显式转换为 VARCHAR:
SELECT COALESCE(Project, '')
+ '-'
+ COALESCE(CAST(FLOOR_ID AS VARCHAR(11)), '')
如果参数为 NULL,CONCAT
函数不会 return NULL。 COALESCE(..., '')
需要匹配行为。
像这样将 Project
和 FLOOR_ID
转换为字符串 -
CAST(Project AS VARCHAR("MAX LENGTH OF PROJECT FIELD"))
与 FLOOR_ID
相同尝试将 FLOOR_ID
转换为文本:
SELECT DISTINCT
Project + '-' + CAST(FLOOR_ID AS VARCHAR(MAX)) AS value
FROM dbo.IMP_MODEL_GEOMETRY
WHERE Project LIKE '%".$test_term."%'";
当前错误消息提到字符串 ' 22067-'
,这意味着 FLOOR_ID
是问题的根源。