1

サイズが 100mm、100、20mm、500、450mm のデータベースから varchar 型のデータを取得し、文字列から 'mm' をトリムして、それを整数に変換し、同じ列から比較します。 @Size1 <= size_column および @size2 >= size_column:

トリミングして変換するクエリは次のとおりですが、エラーが発生します。

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
4

2 に答える 2

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
于 2012-04-17T11:38:37.240 に答える
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
于 2012-04-17T11:54:36.820 に答える