在varchar列中选择项目范围(SQL Server) [英] Select range of items in a varchar column (sql server)

查看:118
本文介绍了在varchar列中选择项目范围(SQL Server)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何从SQL Server的VARCHAR类型列中选择一系列项目?

How can i select a range of items from a VARCHAR type column in sql server?

我想做类似的事情:

SELECT TE.DESC 
FROM PRODUCT P, ETYPE TE WHERE ( P.IDTYPE = TE.IDTYPE )
AND P.NUMBER BETWEEN '619' AND '623'

"P.NUMBER"列可以包含数字和字母,例如"abc123",那么sql无法正确选择我想要的内容.

The 'P.NUMBER' column can contain numbers and letters together like 'abc123', then sql can't select correctly what i want.

有什么方法可以做到?

谢谢

推荐答案

首先,您需要创建一个函数,该函数将从NUMBER中删除所有非数字字符并返回浮点数(或整数),如下所示:

First, you need to create a function which will strip all non-numeric characters from your NUMBER and return a float (or int), like so:

create function dbo.RemoveAlpha(@str varchar(1000))
returns float
AS
begin
    while patindex('%[^0-9]%', @str) > 0
    begin
        set @strText = stuff(@str, patindex('%[^0-9]%', @str), 1, '')
    end
    return convert(float, @str)
end

然后,您可以像这样重写查询:

Then your can rewrite your query like so:

SELECT TE.DESC 
FROM PRODUCT P, ETYPE TE 
WHERE ( P.IDTYPE = TE.IDTYPE )
AND dbo.RemoveAlpha(P.NUMBER) BETWEEN 619 AND 623

这篇关于在varchar列中选择项目范围(SQL Server)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆