열 데이터 형식은 NVARCHAR(MAX)
입니다. 어떻게하면 Integer
으로 변환 할 수 있습니까?NVARCHAR를 INT로 변환
CREATE TABLE UsrMast(Usr_Id int,
Usr_Pswd varchar(30),
Usr_Priv varchar(100))
CREATE TABLE T117_MenuMst(MenuID int,
Text varchar(50),
Description varchar(200),
ParentID int,
NavigateUrl varchar(100))
저장 프로 시저
CREATE PROCEDURE USP_MENUITEM (@UserID [varchar](50))
BEGIN
CREATE TABLE #TMP(MenuID INT, Text VARCHAR(50), Description VARCHAR(50), ParentID INT, NavigateUrl VARCHAR(100))
DECLARE @VAL NVARCHAR(MAX), @Pos INT, @len INT
--SET @VAL=(SELECT REPLACE(REPLACE(CONVERT(VARCHAR(30), SUM(CAST(PrivilegeID AS NUMERIC(30, 0)))), '2', '1'), '3', '1') FROM tblGroupPrivMst WHERE GroupCode in (SELECT GroupCode FROM tblUserGrpMap WHERE [email protected]))
SET @VAL=(SELECT REPLACE(REPLACE(CONVERT(VARCHAR(70), SUM(CAST(Usr_Priv AS NUMERIC(38, 0)))), '2', '1'), '3', '1') FROM T112_UsrMast WHERE [email protected])
SET @Pos=1
SET @len=LEN(@VAL)
WHILE(@len!=0)
BEGIN
DECLARE @Value CHAR(1)
SET @Value=SUBSTRING(@VAL, @Pos, 1)
IF @Value=1
BEGIN
PRINT @Value
INSERT INTO #TMP SELECT * FROM T117_MenuMst WHERE [email protected]
END
SET @[email protected]+1
SET @[email protected]
END
--For first Node (Inserting The Parent Node)
INSERT INTO #TMP SELECT * FROM T117_MenuMst WHERE MenuID IN(SELECT DISTINCT ParentID FROM #TMP WHERE ParentID NOT IN(SELECT MenuID FROM #TMP))
--For second Node (Inserting The Parent Node)
INSERT INTO #TMP SELECT * FROM T117_MenuMst WHERE MenuID IN(SELECT DISTINCT ParentID FROM #TMP WHERE ParentID NOT IN(SELECT MenuID FROM #TMP))
--For third Node (Inserting The Parent Node)
INSERT INTO #TMP SELECT * FROM T117_MenuMst WHERE MenuID IN(SELECT DISTINCT ParentID FROM #TMP WHERE ParentID NOT IN(SELECT MenuID FROM #TMP))
SELECT * FROM #TMP ORDER BY MenuID ASC
DROP TABLE #TMP
END
그러나 내가 갖는 : 데이터 형식의 숫자에 NVARCHAR로 변환
산술 오버플로 오류가 발생했습니다.
UsrMast
테이블Usr_Priv
값에
는
10101111111111111111111111111111111111111111111111
이 제발 도와주세요입니다.
*** 어떤 데이터베이스 시스템 *** 및 어떤 버전이 있습니까? –
대부분의 데이터베이스 시스템에서 'INT'에 대한 ** 최대 ** 값은 2'147'483'648 (약 20 억 개)입니다. 당신의 문자열은 ** INT **에 대해 너무 비싸 **입니다! ** ** 정확히 ** 오류가 무엇을 말하는지 ... –
SQLSERVER 2008R2, N을 (를) 사용하고 있습니다. 내 오류가 정확히 "데이터 형식 숫자로 nvarchar를 변환하는 산술 오버플로 오류"입니다. – Bannu