当前位置: 首页 > 面试题库 >

SQL查询以带回仅包含数字(特别是IP地址)的字段

文凯康
2023-03-14
问题内容

我有一些表,其中有一个名为company的字段,可以在其中包含:

“假公司”或“ 5.5.5.5”

上面的数字地址当然是IP地址。

我不确定如何编写一个选择查询,该查询只返回其中具有IP地址的行,而不仅仅是文本。有任何想法吗?


问题答案:

您可以在SQL Server上使用RegularExpressions,例如:

INSERT INTO tIP VALUES('Fake Company');
INSERT INTO tIP VALUES('5.5.5.5');
INSERT INTO tIP VALUES('192.168.5.8');
INSERT INTO tIP VALUES('192.168.5.88');

DECLARE @regexPattern varchar(100);
SET @regexPattern='([0-9]{1,3}\.|\*\.){3}([0-9]{1,3}|\*){1}';

SELECT * FROM tIP 
WHERE dbo.RegexMatch( tIP.IP, @regexPattern ) = 1

这是函数

CREATE FUNCTION [dbo].[RegexMatch](@Input [nvarchar](4000), @Pattern [nvarchar](4000))
RETURNS [bit] WITH EXECUTE AS CALLER
AS 
EXTERNAL NAME [RegexLib].[RegexLib.UserDefinedFunctions].[RegexMatch]
  • SQL Server上的RegularExpressions:http: //msdn.microsoft.com/en-us/magazine/cc163473.aspx
  • 如何在SQL Server中集成.NET程序集:http : //www.codeproject.com/KB/database/DotnetAssembliesInMSSQL.aspx?display=Mobile


 类似资料:
  • 问题内容: 我有一列,说PROD_NUM,其中包含一个用零填充的“数字”。例如001004569。它们都是9个字符长。 我不使用数字类型,因为对数字的常规运算对这些“数字”没有意义(例如PROD_NUM * 2没有任何意义。)而且由于它们的长度相同,因此该列定义为CHAR(9) 我想限制PROD_NUM,以便它只能包含九位数字。没有空格,除了‘0’到‘9’之外没有其他字符 问题答案:

  • 问题内容: 我想检查a是否仅包含数字。我用这个: 但意识到它也允许和。基本上,我要确保只能包含数字,而不能包含其他字符。由于和都是数字,所以不是正确的方法。也许我需要一个正则表达式?有小费吗? 问题答案: 怎么样

  • 问题内容: 实际上,几周前有人问我自己,而我确切地知道如何使用SP或UDF来执行此操作,但是我想知道是否有没有这些方法的快速简便的方法。我假设有,但我找不到。 我需要说明的一点是,尽管我们知道允许使用哪些字符(az,AZ,0-9),但我们 不想指定 不允许使用的字符(#@!$等…)。另外,我们希望拉出 包含 非法字符的行,以便可以将其列出给用户修复(由于我们无法控制输入过程,因此此时无法执行任何操

  • 问题内容: 我有一个名为X的字段(在Oracle中为列),其值类似于“ a1b2c3”,“ abc”,“ 1ab”,“ 123”,“ 156” 如何编写一个SQL查询,仅返回包含纯数值=不包含字母的X?上例中的156’‘。 从myTable中选择X,其中… ?? 问题答案: 您可以将函数用作: 样品运行:

  • 问题内容: 我想找到一个SQL查询来查找其中field1不包含$ x的行。我怎样才能做到这一点? 问题答案: 这是什么领域?IN运算符不能与单个字段一起使用,而应与子查询或预定义列表一起使用: 如果要搜索字符串,请使用LIKE运算符(但这会很慢): 如果将其限制为要搜索的字符串必须以给定的字符串开头,则可以使用索引(如果该字段上有索引)并且速度相当快:

  • 问题内容: 我正在使用SQL Server 2005。 我只需要找出在``ody’‘栏中有特殊字符的那些行。在以下情况下,结果应仅是TemplateID = 2的行。我们如何为此编写查询? 除了以下内容,此情况下的其他任何字符都是特殊字符 问题答案: 方括号之间的内容是数字(0-9),小写字母(az),大写字母(AZ)和空格。其中的“ ^”表示“不”。请注意,这与“不喜欢’%[0-9a-zA-Z]