仅选择编号为SQL Server的字符串

soa*_*ing 8 sql-server string

我需要在表格中仅选择字符串,但此表格中包含数字和字符串.

例如:

ID Name
1  Jacke11
2  Andre
3  Rodrigo11
4  55555
Run Code Online (Sandbox Code Playgroud)

我的选择需要仅返回Ids:1,2,3.

谢谢

Joe*_*lli 18

SELECT ID
    FROM YourTable
    WHERE ISNUMERIC(Name + '.0e0') = 0
Run Code Online (Sandbox Code Playgroud)

  • @Yuck - 因为您可能会获得与`ISNUMERIC` 意外匹配的结果,因为它会为浮点数(还有货币和一些符号)等非整型数据类型评估“TRUE”。`12e10` 会将 `ISNUMERIC` 作为 `TRUE` 传递。通过添加`.0e0`,你可以强制它只检查整数值。 (3认同)
  • 我想我知道为什么,但你可以评论你为什么要做'+'.0e0'`,因为我觉得这不是很直观. (2认同)
  • @Yuck:如果没有,ISNUMERIC 会为诸如“+”和“$”之类的东西返回 1。 (2认同)

JNK*_*JNK 6

作为Joe非常精细的ISNUMERIC解决方案的替代方案,您可以使用PATINDEX以确保您具有字母字符:

SELECT ID
    FROM YourTable
    WHERE PATINDEX('%[a-z]%', name) > 0
Run Code Online (Sandbox Code Playgroud)

这可能会稍快一些,因为它会在到达第一个字母字符时立即停止搜索字符串.