我正在研究SQL 2008并且有一个包含1000个代码的表 - 示例如下:
D37
D37.0
D38
D38.0
D39
D39.0
D3A
D3A.0
D40
我需要做的是选择D37
和D40
之间的值。但是,我不想要D3A值(或D3B或D3C)。我尝试过以下方法:
SELECT Code
FROM Table
WHERE Code BETWEEN 'D37' AND 'D40'
但是,这会获得上面列出的所有代码,包括D3A
代码。
有没有办法排除不属于37-40范围的代码?
答案 0 :(得分:1)
假设始终遵循单字母约定,并且没有比数据中显示的更奇怪的字符,您可以这样做:
WITH cte AS (
[MyColumn]
, SELECT SUBSTRING([MyColumn],2,LEN([MyColumn)-1) AS Code
FROM MyTable
WHERE ISNUMERIC(SUBSTRING([MyColumn],2,LEN([MyColumn)-1)=1
)
SELECT [MyColumn]
FROM cte
WHERE CAST(Code AS float) BETWEEN 37 AND 40
答案 1 :(得分:0)
它很乱,但这应该按照你要求做的。
SELECT代码
来自Mytable
其中
ISNUMERIC(SUBSTRING(代码,2,(len(代码))))> 0
并将(float,SUBSTRING(code,2,(len(code)))转换为37到40之间