Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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查询_Sql - Fatal编程技术网

用于字符串分离的SQL查询

用于字符串分离的SQL查询,sql,Sql,输入: 获取o/p的逻辑:前开括号将为fname,内@和后@将为alias1和Alias2,具体取决于序列顺序 Full Name ------------------ ABC (PQR) (ABC) PQR (XYZ) ABC @ PQR ABC @ PQR (XYZ) ABC (PQR) @123 期望输出: FNAME ALIAS1 ALIAS2 ----------------------- ABC PQR PQR ABC XYZ ABC PQ

输入: 获取o/p的逻辑:前开括号将为fname,内@和后@将为alias1和Alias2,具体取决于序列顺序

Full Name
------------------
ABC (PQR)
(ABC) PQR (XYZ)
ABC @ PQR
ABC @ PQR (XYZ)
ABC (PQR) @123
期望输出:

FNAME   ALIAS1   ALIAS2
-----------------------
ABC     PQR
PQR     ABC      XYZ
ABC     PQR
ABC     PQR      XYZ
ABC     PQR      123

请用这样的东西-

;WITH CTE1 AS
(
    SELECT REPLACE(REPLACE(REPLACE([Full Name],'(',''),')',''),'@','') [Full Name] FROM Names
)
,CTE AS
(
    SELECT [Full Name],
    CAST(('<r><n>' + REPLACE([Full Name],' ', '</n><n>') + '</n></r>') AS XML) X
   FROM CTE1
)
SELECT 
FNAME, CASE WHEN ALIAS1 = '' THEN ALIAS2 ELSE ALIAS1 END ALIAS1,
CASE WHEN ALIAS1 = '' THEN '' ELSE ALIAS2 END ALIAS2 
FROM 
(
    SELECT
     i.value('n[1]','VARCHAR(50)') AS FNAME,
     ISNULL(i.value('n[2]','VARCHAR(50)'),'') AS ALIAS1,
     ISNULL(i.value('n[3]','VARCHAR(50)'),'') AS ALIAS2
    FROM CTE c
    CROSS APPLY c.X.nodes('/r') x(i)
)z

在格式化代码之后,我仍然不知道您想要什么。请阅读并提供足够的上下文来帮助您。。所以,不要为你写你的问题,公布你得到了什么,不同之处以及你想要什么。有人能有三个以上的部分吗?例如:ABC QPR@DEF TEY。我删除了不兼容的数据库标记。请用您真正使用的数据库标记您的问题。如果您在拆分字符串后,请在此处查看@GordonLinoff的答案:这将使此问题与您使用的产品重复?博士后?神谕SQL只是一种查询语言,不是特定数据库产品的名称。输出不正确。。请根据您的陈述查看问题的答案,了解以下数据->ABC PQR,ABC如何成为第一名。你的要求不清楚,因为ABC是以前的
/*------------------------
OUTPUT
------------------------*/
FNAME                        ALIAS1    ALIAS2
---------------------------- --------- --------------------------------------------------
ABC                          PQR       
ABC                          PQR       XYZ
ABC                          PQR       
ABC                          PQR       
ABC                          PQR       123

(5 row(s) affected)