2013-10-31 180 views
0

我在下方有varchar中的Customer_Telephone_Number值。Ms Sql将varchar转换为Big Int

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 

,如果我尝试插入Customer_Telephone_Number价值Database_1,我得到异常的下方。

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中添加这些字符,就像我在示例中那样。