+
데이터베이스 에 분리 된 문자열 열이있는 테이블이 있습니다. 어쨌든 각 행의 합계를 선택할 수 있습니까? 즉, 우리가 가지고 있다고 말하십시오 5212667+5212662
; 을 선택하고 싶습니다 10425329
.
시도 CONVERT(INT, ColumnAddList)
했지만 작동하지 않았습니다.
사용하는 경우 SQL Server
합계를 분할하고 계산할 수 있습니다.
CREATE TABLE tab(ID INT IDENTITY(1,1), col VARCHAR(1000));
INSERT INTO tab(col) VALUES('5212667+5212662'),('1+2+3'),('2'), (NULL), ('1+-1');
SELECT *
FROM tab
CROSS APPLY (
SELECT [result] = SUM( Split.a.value('.', 'BIGINT'))
FROM (SELECT [X] = CAST ('<M>'+REPLACE(col, '+', '</M><M>') + '</M>' AS XML)) AS A
CROSS APPLY X.nodes ('/M') AS Split(a)
) AS s;
산출:
╔════╦═════════════════╦══════════╗
║ ID ║ col ║ result ║
╠════╬═════════════════╬══════════╣
║ 1 ║ 5212667+5212662 ║ 10425329 ║
║ 2 ║ 1+2+3 ║ 6 ║
║ 3 ║ 2 ║ 2 ║
║ 4 ║ NULL ║ NULL ║
║ 5 ║ 1+-1 ║ 0 ║
╚════╩═════════════════╩══════════╝
올바른 방법은 테이블 스키마를 정규화하는 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다