Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Concat在SQL Server中不工作_Sql Server - Fatal编程技术网

Sql server Concat在SQL Server中不工作

Sql server Concat在SQL Server中不工作,sql-server,Sql Server,我有一个名为product的表,其中包含名称(nvarchar 1000) 我有一个名为accnt\U test的帐户表,其名称为product\U id name A1 P1;;p2;;p3;;p4 A2 P1;;p2 A3 P1;;p2;;p3 A4 P1;;p2;;p3;;p4 A5 P1 我必须从包含产品表中所有产品的帐户表中选择这些帐户 因此,我的输出应该如下所示: id name A1 P1;;p2;;p3;;p4 A4 P1;;p2;;p3;;p4

我有一个名为product的表,其中包含名称(nvarchar 1000)

我有一个名为accnt\U test的帐户表,其名称为product\U

id   name
A1   P1;;p2;;p3;;p4
A2   P1;;p2
A3   P1;;p2;;p3
A4   P1;;p2;;p3;;p4
A5   P1
我必须从包含产品表中所有产品的帐户表中选择这些帐户

因此,我的输出应该如下所示:

id  name
A1  P1;;p2;;p3;;p4
A4  P1;;p2;;p3;;p4
因为这两个帐户包含产品表中的所有产品

我已经在SQL Server中编写了一个查询,但它不起作用

这是一个问题:

SELECT *
  FROM accnt_test ACC
 WHERE ACC.product_name IN
       (SELECT VM.product_name
          FROM (SELECT A.*, P.NAME
                  FROM accnt_test A, product P
                 WHERE A.product_name LIKE
                       CONCAT('%', CONCAT(P.NAME, '%'))) VM
         GROUP BY VM.product_name
        HAVING COUNT(*) = (SELECT COUNT(DISTINCT NAME) FROM PRODUCT));
那么如何在concat的情况下使用它呢

但是SQL Server显示错误:

sg 195, Level 15, State 10, Line 9
'CONCAT' is not a recognized built-in function name.
 Msg 102, Level 15, State 1, Line 11
Incorrect syntax near ')'.

CONCAT是SQL Server 2012的新功能。它不是以前版本(包括2008 R2)上的功能

使用“fn concat”

select {fn concat('%', {fn concat('String', '%')})}
这是带有“fn concat”的代码。它会起作用的

SELECT *
  FROM accnt_test ACC
 WHERE ACC.product_name IN
       (SELECT VM.product_name
          FROM (SELECT A.*, P.NAME
                  FROM accnt_test A, product P
                 WHERE A.product_name LIKE
                       {fn concat('%', {fn concat(P.NAME, '%')})}) VM
         GROUP BY VM.product_name
        HAVING COUNT(*) = (SELECT COUNT(DISTINCT NAME) FROM PRODUCT));

CONCAT是SQL Server 2012的新功能。它不是以前版本(包括2008 R2)上的功能

使用“fn concat”

select {fn concat('%', {fn concat('String', '%')})}
这是带有“fn concat”的代码。它会起作用的

SELECT *
  FROM accnt_test ACC
 WHERE ACC.product_name IN
       (SELECT VM.product_name
          FROM (SELECT A.*, P.NAME
                  FROM accnt_test A, product P
                 WHERE A.product_name LIKE
                       {fn concat('%', {fn concat(P.NAME, '%')})}) VM
         GROUP BY VM.product_name
        HAVING COUNT(*) = (SELECT COUNT(DISTINCT NAME) FROM PRODUCT));

CONCAT是SQL Server 2012的新功能。它不是以前版本(包括2008 R2)上的功能

使用“fn concat”

select {fn concat('%', {fn concat('String', '%')})}
这是带有“fn concat”的代码。它会起作用的

SELECT *
  FROM accnt_test ACC
 WHERE ACC.product_name IN
       (SELECT VM.product_name
          FROM (SELECT A.*, P.NAME
                  FROM accnt_test A, product P
                 WHERE A.product_name LIKE
                       {fn concat('%', {fn concat(P.NAME, '%')})}) VM
         GROUP BY VM.product_name
        HAVING COUNT(*) = (SELECT COUNT(DISTINCT NAME) FROM PRODUCT));

CONCAT是SQL Server 2012的新功能。它不是以前版本(包括2008 R2)上的功能

使用“fn concat”

select {fn concat('%', {fn concat('String', '%')})}
这是带有“fn concat”的代码。它会起作用的

SELECT *
  FROM accnt_test ACC
 WHERE ACC.product_name IN
       (SELECT VM.product_name
          FROM (SELECT A.*, P.NAME
                  FROM accnt_test A, product P
                 WHERE A.product_name LIKE
                       {fn concat('%', {fn concat(P.NAME, '%')})}) VM
         GROUP BY VM.product_name
        HAVING COUNT(*) = (SELECT COUNT(DISTINCT NAME) FROM PRODUCT));

你的代码中有太多的bug。根据MySQL,SQL SERVER 2008R2或以前版本中没有内置的
concat
函数。尝试按以下方式更改查询:

SELECT *
FROM   accnt_test ACC
WHERE  ACC.product_name IN (SELECT A.product_name
                            FROM   accnt_test A,
                                   product P
                            WHERE  A.product_name LIKE '%' + P.NAME + '%')
GROUP  BY product_name
HAVING Count(*) = (SELECT Count(DISTINCT NAME)
                   FROM   PRODUCT) 

你的代码中有太多的bug。根据MySQL,SQL SERVER 2008R2或以前版本中没有内置的
concat
函数。尝试按以下方式更改查询:

SELECT *
FROM   accnt_test ACC
WHERE  ACC.product_name IN (SELECT A.product_name
                            FROM   accnt_test A,
                                   product P
                            WHERE  A.product_name LIKE '%' + P.NAME + '%')
GROUP  BY product_name
HAVING Count(*) = (SELECT Count(DISTINCT NAME)
                   FROM   PRODUCT) 

你的代码中有太多的bug。根据MySQL,SQL SERVER 2008R2或以前版本中没有内置的
concat
函数。尝试按以下方式更改查询:

SELECT *
FROM   accnt_test ACC
WHERE  ACC.product_name IN (SELECT A.product_name
                            FROM   accnt_test A,
                                   product P
                            WHERE  A.product_name LIKE '%' + P.NAME + '%')
GROUP  BY product_name
HAVING Count(*) = (SELECT Count(DISTINCT NAME)
                   FROM   PRODUCT) 

你的代码中有太多的bug。根据MySQL,SQL SERVER 2008R2或以前版本中没有内置的
concat
函数。尝试按以下方式更改查询:

SELECT *
FROM   accnt_test ACC
WHERE  ACC.product_name IN (SELECT A.product_name
                            FROM   accnt_test A,
                                   product P
                            WHERE  A.product_name LIKE '%' + P.NAME + '%')
GROUP  BY product_name
HAVING Count(*) = (SELECT Count(DISTINCT NAME)
                   FROM   PRODUCT) 


您使用的是哪个版本的SQLServer?CONCAT仅在2012年和2014年受支持。您可以使用内部联接获取包含所有产品的帐户,然后使用delimeter的sql到CONCAT产品的XML路径功能。让我知道您是否对该解决方案感兴趣您使用的是什么版本的SQLServer?CONCAT仅在2012年和2014年受支持。您可以使用内部联接获取包含所有产品的帐户,然后使用delimeter的sql到CONCAT产品的XML路径功能。让我知道您是否对该解决方案感兴趣您使用的是什么版本的SQLServer?CONCAT仅在2012年和2014年受支持。您可以使用内部联接获取包含所有产品的帐户,然后使用delimeter的sql到CONCAT产品的XML路径功能。让我知道您是否对该解决方案感兴趣您使用的是什么版本的SQLServer?CONCAT仅在2012年和2014年受支持。您可以使用内部联接获取包含所有产品的帐户,然后使用delimeter的sql到CONCAT产品的XML路径功能。如果您对该解决方案感兴趣,请告诉我。不,只有SQL server 2012及以后的解决方案才有兴趣。检查MSDN@Rahul是的,忘了提到它。不,只有在SQL server 2012以后才有。检查MSDN@Rahul是的,忘了提到它。不,只有在SQL server 2012以后才有。检查MSDN@Rahul是的,忘了提到它。不,只有在SQL server 2012以后才有。勾选MSDN@Rahul yes忘了提到它。为什么不使用连接运算符
+
?这样行吗。但在这里,他问康卡特为什么不工作。因此,我建议将{fn concat('',)}用于较低版本。为什么不使用串联运算符
+
?这是可行的。但在这里,他问康卡特为什么不工作。因此,我建议将{fn concat('',)}用于较低版本。为什么不使用串联运算符
+
?这是可行的。但在这里,他问康卡特为什么不工作。因此,我建议将{fn concat('',)}用于较低版本。为什么不使用串联运算符
+
?这是可行的。但在这里,他问康卡特为什么不工作。因此,我建议{fn concat('','')}用于较低版本。