首页 > 解决方案 > 根据字段中的数据结构确定要返回的记录

问题描述

如果我有一个包含许多值的字段,例如

67495837431978432 ABC1234

和其他值,如

1234 Something Street

(我知道数据不应该是这样的。它不是我的数据库。无法更改。请忽略。)

我怎样才能像前者一样只返回在该字段中有数据的记录?

我试过了

where SUBSTRING(field, 1, 10) LIKE '%[0-9]%'

我的想法是,如果第一种类型的值以 17 个数字开头,而下一种类型是前 10 个字符中有很多字母的街道地址,我应该能够检查前 10 个字符是否仅包含数字,并返回基于此的字段,我应该只取回类似的记录

67495837431978432 ABC1234

如我所愿。不是最干净的,但应该适合我的情况。但这没有用。我不明白为什么。我犯了一个我没有看到的错误吗?有没有更好的相对简单的方法来做到这一点?

标签: sql

解决方案


如果您使用的是 SQL Server,并且想要检查前十个字符是否为数字,则可以使用like字符类:

where field LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%'

推荐阅读