2012-04-17 6 views
1

varchar型のデータベース、たとえば サイズからデータを取得したい:100mm、100mm、20mm、500mm、450mm、文字列から "mm"と整数に変換し、同じ列からの比較よりも:@ Size1 < = size_columnと@ size2> = size_column:単一のSQLクエリでSQL DBからの文字列を切り捨て、変換して比較する

ここでトリムと変換するための私のクエリは、 。

SELECT DEVICE_NO, 
CASE [Rms_Size] 
WHEN 
(SELECT RMS_SIZE FROM DW_DATA.DBO.DIM_DEVICE WHERE 
Ltrim(Rtrim(Rms_Size)) LIKE '%mm') 
THEN 
(SELECT SUBSTRING(Rms_Size,1,LEN(rms_size)-2) 
FROM DW_DATA.DBO.DIM_DEVICE 
where Ltrim(Rtrim(Rms_Size)) LIKE '%mm') 
ELSE 
RMS_SIZE 
END 
AS RMS_SIZE 
FROM 
DW_DATA.DBO.DIM_DEVICE 

答えて

2

これを試してみてください - :

SELECT 
    DEVICE_NO, 
    CASE 
     WHEN 
     LTRIM(RTRIM(Rms_Size)) LIKE '%mm' 
     THEN 
     SUBSTRING(Rms_Size,1,LEN(rms_size)-2) 
     ELSE 
     RMS_SIZE 
     END 
     AS RMS_SIZE 
FROM DW_DATA.DBO.DIM_DEVICE 
0
create table mytable(
mystring varchar(100)) 

insert into mytable values('100mm') 
insert into mytable values('100') 

create Function removeChars(@mainString VarChar(100)) 
Returns VarChar(1000) 
AS 
BEGIN 
    WHILE PatIndex('%[^0-9]%', @mainString) > 0 BEGIN 
     Set @mainString = Stuff(@mainString, PatIndex('%[^0-9]%', @mainString), 1, '') 
    END 

    Return @mainString 
END 

select * 
from mytable 
where dbo.removeChars(mystring) >50 
関連する問題