2013-10-31 2 views
0

고객의 전화 번호가 인 varchar 아래에 있습니다.MS SQL은 varchar를 Big Int로 변환합니다.

Customer_Telephone_Number 값 : 나는 참고 Database_1에 Customer_Telephone_Number 값을 삽입하려고하면 (222) -3333-333

INSERT INTO DATABASE_1.dbo.CUSTOMER_TABLE 
(
Customer_Telephone_Number 
) 

Select 

CONVERT(BIGINT,Customer_Telephone_Number) 

from 
DATABASE_2.DBO.CUSTOMER_TABLE 

, 나는 예외 아래 얻을.

Error converting data type varchar to bigint. 

어떻게 문제를 해결하기 위해 "("와 ")"나는이 문제를 해결할 수 또는 내가 제거 할 수 있습니까?

도움이 될 것입니다.

감사합니다.

+0

숫자가 아닌 문자가 정확히 무엇인지 알고 계십니까? –

+0

1-() -222-2296 2- (332) -228-1180 3-() - - – michael

답변

2

신속하고 더러운 방법은 다음과 같습니다

Select 
    CONVERT 
    (
     BIGINT, 
     REPLACE 
     (
      REPLACE 
      (
       REPLACE 
       (
        REPLACE 
        (
         Customer_Telephone_Number, 
         ' ',--Replace white spaces 
         '' 
        ), 
        '-',--Replace dashes 
        '' 
       ), 
       '(',--Replace open parenthesis 
       '' 
      ), 
      ')',--Replace close parenthesis 
      '' 
     ) 
    ) 
from 
    DATABASE_2.DBO.CUSTOMER_TABLE 

당신은 다른 잠재적 인 문자를 참조하기 위해 다음 실행할 수 있습니다

select Customer_Telephone_Number 
from DATABASE_2.DBO.CUSTOMER_TABLE 
where ISNUMERIC 
    (
     REPLACE 
     (
      REPLACE 
      (
       REPLACE 
       (
        REPLACE 
        (
         Customer_Telephone_Number, 
         ' ',--Replace white spaces 
         '' 
        ), 
        '-',--Replace dashes 
        '' 
       ), 
       '(',--Replace open parenthesis 
       '' 
      ), 
      ')',--Replace close parenthesis 
      '' 
     ) 
    ) = 0 

이 당신에게 전화 번호 목록을 줄 것을 그 수 없습니다 BIGINT으로 변환됩니다. 이유를 확인하고 (예를 들어, 문자가 . 인 경우)이 예에서와 같이이 문자를 REPLACE에 추가하십시오.

관련 문제