SQL中的数字精细字母

时间:2011-01-12 14:17:40

标签: sql-server tsql

我有一张这样的桌子:

CREATE TABLE [Mytable](
    [Name] [varchar](10),
    [number] [nvarchar](100) )

我想找到包含字母字符的[数字]?

数据必须格式如下:

Name | number
---------------
Jack | 2131546
Ali  | 2132132154

但是一些时间数字插入通知,其中有字母char和其他没有数字字符,如下所示:

Name | number
---------------
Jack | 2[[[131546ddfd
Ali  | 2132*&^1ASEF32154

我想找到这个明智的排。 我不能使用'喜欢',因为'喜欢'让我的查询非常慢。

2 个答案:

答案 0 :(得分:5)

更新以查找所有非数字字符

select * from Mytable where number like '%[^0-9]%'

关于性能的评论可能使用clr和regex会稍微加快速度,但这个查询的大部分成本将是逻辑读取的数量。

答案 1 :(得分:0)

在盒子外面,但你可以这样做:

  1. 将数据从表中批量复制到平面文件中
  2. 创建一个与原始表具有相同结构但是[number]列具有正确数值类型(例如int)的表。
  3. 将您的数据批量复制到此新表中,确保指定批处理大小为1和错误文件(其中将不适合该架构的行)
  4. 最终出现在错误文件中的行是[number]列中包含非数字的行
  5. 当然,你可以用光标和临时表做两件事......