下面的代码是一个包含温度的分组数据样本(请记住它在医院中的人体温度)。
显然数据很糟糕但想知道是否有可能以某种方式将这些数据转换为INT,因为我们有一个UOM(测量单位)字段,所以我们只需要这个数字。
数据问题:
88度显然是华氏温度而不是摄氏温度 3635将是36.35 .368将是36.8 37.3。将是37.3 .37.7将是37.7 377将是37.7 .3.8将是38我认为任何其他变体都应该被排除在无效数据之外,因为无法准确地做出明智的假设。
DECLARE @Test TABLE (
[Temperature] VARCHAR(500),
[Count] VARCHAR(50)
)
INSERT INTO @Test ([Temperature],[Count])
VALUES
('34.4 oC',' 9 '),
('36.02 oC',' 1 '),
('36.36 oC',' 3 '),
('36.5 oC',' 5593 '),
('36.5. oC',' 1 '),
('36.6. oC',' 2 '),
('36.74 oC',' 2 '),
('36.82 oC',' 2 '),
('37.36 oC',' 2 '),
('37.49 oC',' 4 '),
('40 oC',' 1 '),
('88 oC',' 1 '),
(' 3635 oC',' 1 '),
(' .368 oC',' 1 '),
('33.5 oC',' 1 '),
('35.2 oC',' 84 '),
('35.20 oC',' 1 '),
('35.99 oC',' 1 '),
('36.35 oC',' 2 '),
('37.3. oC',' 1 '),
('39.5 oC',' 5 '),
('86 oC',' 1 '),
(' 356 oC',' 12 '),
(' 364 oC',' 72 '),
(' 379 oC',' 9 '),
(' 385 oC',' 2 '),
(' 3535 oC',' 1 '),
(' .37.7 oC',' 1 '),
('35.5 oC',' 290 '),
('35.87 oC',' 1 '),
('36..6 oC',' 1 '),
('36.25 oC',' 2 '),
('36.45 oC',' 2 '),
('36.62 oC',' 2 '),
('36.68 oC',' 5 '),
('36.8. oC',' 2 '),
('37.03 oC',' 5 '),
('37.1 oC',' 3610 '),
('37.16 oC',' 3 '),
('37.2 oCC000715799',' 1 '),
('37.27 oC',' 2 '),
('37.91 oC',' 1 '),
('38.9 oC',' 28 '),
('63.5 oC',' 1 '),
('71 oC',' 1 '),
(' 377 oC',' 8 '),
(' 36.5 oC',' 1 '),
(' 3.4 oC',' 3 '),
(' 3.7 oC',' 3 '),
('36.59 oC',' 1 '),
('36.67 oC',' 5 '),
('37.13 oC',' 1 '),
('37.18 oC',' 1 '),
('37.24 oC',' 1 '),
('39.7 oC',' 5 '),
('76 oC',' 2 '),
('80 oC',' 2 '),
(' 347 oC',' 1 '),
(' 352 oC',' 2 '),
(' 368 oC',' 64 '),
(' 3602 oC',' 1 '),
(' 3688 oC',' 1 '),
(' .36.4 oC',' 1 '),
(' .8 oC',' 1 '),
(' 3.2 oC',' 2 '),
('34.3 oC',' 5 '),
('34.9 oC',' 20 '),
('35 oC',' 124 '),
('35.81 oC',' 1 '),
('36.17 oC',' 2 '),
('36.23 oC',' 1 '),
('36.37 oC',' 2 '),
('36.38 oC',' 4 '),
('36.42 oC',' 1 '),
('36.76 oC',' 2 '),
('37..2 oC',' 1 '),
('37.00 oC',' 4 '),
('37.07 oC',' 6 '),
('37.12 oC',' 2 '),
('37.2 oC',' 3151 '),
('37.48 oC',' 2 '),
('39. oC',' 1 '),
('39.2 oC',' 9 '),
('39.9 oC',' 2 '),
(' 370 oC',' 1 '),
('30.1 oC',' 1 '),
('34.1 oC',' 2 '),
('34.8 oC',' 17 '),
('35.43 oC',' 1 '),
('36..8 oC',' 2 '),
('36.05 oC',' 1 '),
('36.21 oC',' 4 '),
('36.31 oC',' 2 '),
('36.41 oC',' 1 '),
('36.58 oC',' 8 '),
('36.8 oC',' 8134 '),
('36.81 oC',' 3 '),
('36.88 oC',' 2 '),
('36.89 oC',' 2 '),
('36.99 oC',' 4 '),
('37.01 oC',' 6 '),
('37.14 oC',' 3 '),
('37.33 oC',' 1 '),
('37.37 oC',' 6 '),
('37.44 oC',' 1 '),
('37.59 oC',' 2 '),
('38.5 oC',' 85 '),
('39.4 oC',' 9 '),
('78 oC',' 2 '),
('92 oC',' 1 '),
(' 361 oC',' 19 '),
(' 383 oC',' 1 '),
(' 391 oC',' 1 '),
(' 3642 oC',' 1 '),
(' 3699 oC',' 2 '),
(' 37.6 oC',' 1 '),
('35.59 oC',' 1 '),
('35.69 oC',' 1 '),
('35.90 oC',' 1 '),
('36..9 oC',' 1 '),
('36.08 oC',' 2 '),
('36.27 oC',' 1 '),
('36.365 oC',' 1 '),
('36.51 oC',' 1 '),
('36.78 oC',' 4 '),
('36.84 oC',' 1 '),
('36.85 oC',' 3 '),
('36.97 oC',' 2 '),
('37.29 oC',' 1 '),
('37.3 oC',' 2306 '),
('37.8 oC',' 730 '),
('38.08 oC',' 1 '),
('38.4 oC',' 113 '),
('38.49 oC',' 1 '),
('38.7 oC',' 53 '),
('39.3 oC',' 10 '),
('70 oC',' 2 '),
(' 357 oC',' 5 '),
(' 362 oC',' 49 '),
(' 396.8 oC',' 1 '),
(' 3700 oC',' 1 '),
(' 3752 oC',' 1 '),
(' .381 oC',' 1 '),
(' 0.37 oC',' 1 '),
(' 3.1 oC',' 1 '),
('14 oC',' 1 '),
('27 oC',' 1 '),
('34.2 oC',' 5 '),
('34.5 oC',' 22 '),
('35.9 oC',' 633 '),
('36.44 oC',' 2 '),
('36.57 oC',' 1 '),
('36.65 oC',' 1 '),
('36.66 oC',' 3 '),
('37.04 oC',' 7 '),
('65.9 oC',' 1 '),
('82 oC',' 2 '),
(' 118 oC',' 1 '),
(' 358 oC',' 6 '),
(' 381 oC',' 2 '),
(' 396.6 oC',' 1 '),
(' 3704 oC',' 1 '),
(' 3801 oC',' 1 '),
(' ',' 195340 '),
(' 362 oC',' 1 '),
(' .374 oC',' 1 '),
(' 3.6 oC',' 3 '),
('26.5 oC',' 1 '),
('35.0 oC',' 28 '),
('35.79 oC',' 1 '),
('36..7 oC',' 1 '),
('36.00 oC',' 2 '),
('36.18 oC',' 1 '),
('36.48 oC',' 4 '),
('36.49 oC',' 3 '),
('37.19 oC',' 2 '),
('37.46 oC',' 1 '),
('37.9 oC',' 465 '),
('38.12 oC',' 1 '),
('39 oC',' 25 '),
(' 351 oC',' 2 '),
(' 369. oC',' 1 '),
(' 389 oC',' 1 '),
(' 3736 oC',' 1 '),
(' NULL ',' 7 '),
('35.98 oC',' 1 '),
('36 oC',' 2948 '),
('36.28 oC',' 1 '),
('36.69 oC',' 1 '),
('36.72 oC',' 2 '),
('36.77 oC',' 4 '),
('36.98 oC',' 7 '),
('37.05 oC',' 3 '),
('37.06 oC',' 2 '),
('37.15 oC',' 3 '),
('37.25 oC',' 5 '),
('37.26 oC',' 3 '),
('37.39 oC',' 3 '),
('37.42 oC',' 1 '),
('37.68 oC',' 3 '),
('38.3 oC',' 160 '),
('38.6. oC',' 1 '),
(' 376 oC',' 18 '),
(' 3617 oC',' 1 '),
(' 3703 oC',' 1 '),
(' 3.8 oC',' 2 '),
(' 7.6 oC',' 1 '),
('30.6 oC',' 1 '),
('34 oC',' 3 '),
('34.7 oC',' 9 '),
('35.06 oC',' 1 '),
('35.7 oC',' 324 '),
('35.74 oC',' 1 '),
('36.01 oC',' 2 '),
('36.1 oC',' 1517 '),
('36.12 oC',' 1 '),
('36.4 oC',' 5001 '),
('36.6 oC',' 7044 '),
('36.79 oC',' 5 '),
('36.86 oC',' 1 '),
('36.90 oC',' 1 '),
('36.93 oC',' 1 '),
('37.30 oC',' 1 '),
('37.92 oC',' 1 '),
('38. oC',' 5 '),
('38.6 oC',' 65 '),
('38.8 oC',' 46 '),
('97 oC',' 1 '),
(' 354 oC',' 4 '),
(' 355 oC',' 5 '),
(' 365 oC',' 107 '),
(' 3654 oC',' 1 '),
('35.8 oC',' 495 '),
('36.09 oC',' 6 '),
('36.2 oC',' 2526 '),
('36.3. oC',' 1 '),
('36.47 oC',' 1 '),
('36.53 oC',' 2 '),
('36.9 oC',' 5449 '),
('37.0 oC',' 1209 '),
('37.1. oC',' 1 '),
('37.32 oC',' 2 '),
('37.38 oC',' 5 '),
('37.45 oC',' 1 '),
('37.5 oC',' 1477 '),
('37.6 oC',' 1101 '),
('37.80 oC',' 1 '),
('38.1 oC',' 215 '),
('40.2 oC',' 1 '),
('62 oC',' 1 '),
(' 366 oC',' 61 '),
(' 375 oC',' 28 '),
('16 oC',' 1 '),
('34.0 oC',' 1 '),
('35. oC',' 3 '),
('35.1 oC',' 61 '),
('35.23 oC',' 1 '),
('35.58 oC',' 2 '),
('36. oC',' 59 '),
('36.03 oC',' 1 '),
('36.16 oC',' 2 '),
('36.94 oC',' 2 '),
('37.08 oC',' 7 '),
('37.21 oC',' 1 '),
('37.47 oC',' 1 '),
('39.8 oC',' 3 '),
(' 346 oC',' 1 '),
(' 353 oC',' 2 '),
(' 369 oC',' 57 '),
(' 374 oC',' 28 '),
(' 3677 oC',' 1 '),
(' 37.4 oC',' 1 '),
('34.6 oC',' 15 '),
('35.3 oC',' 74 '),
('35.4 oC',' 120 '),
('35.6 oC',' 320 '),
('36.06 oC',' 1 '),
('36.07 oC',' 2 '),
('36.14 oC',' 1 '),
('36.19 oC',' 1 '),
('36.54 oC',' 1 '),
('36.71 oC',' 1 '),
('36.92 oC',' 1 '),
('37.50 oC',' 1 '),
('37.54 oC',' 1 '),
('37.7 oC',' 836 '),
('39.0 oC',' 8 '),
('39.6 oC',' 3 '),
('60 oC',' 1 '),
(' 127 oC',' 1 '),
(' 336.8 oC',' 1 '),
(' 1500 oC',' 1 '),
(' 36.4 oC',' 1 '),
('36.0 oC',' 829 '),
('36.3 oC',' 3192 '),
('36.56 oC',' 3 '),
('36.63 oC',' 2 '),
('36.7 oC',' 6348 '),
('36.73 oC',' 3 '),
('36.96 oC',' 4 '),
('37. oC',' 64 '),
('37.4 oC',' 1861 '),
('37.69 oC',' 1 '),
('38.01 oC',' 1 '),
('93 oC',' 1 '),
(' 351. oC',' 1 '),
(' 371 oC',' 24 '),
(' 372 oC',' 45 '),
(' 373 oC',' 30 '),
(' 3722 oC',' 1 '),
(' .3.8 oC',' 1 '),
('26.1 oC',' 1 '),
('35.97 oC',' 4 '),
('36.61 oC',' 3 '),
('37 oC',' 4890 '),
('37.02 oC',' 3 '),
('37.66 oC',' 1 '),
('38 oC',' 367 '),
('38.0 oC',' 72 '),
('38.2 oC',' 225 '),
('39.1 oC',' 22 '),
(' 359 oC',' 14 '),
(' 360 oC',' 3 '),
(' 363 oC',' 49 '),
(' 367 oC',' 112 '),
(' 378 oC',' 8 ')
Select
*
from @Test
答案 0 :(得分:1)
我相信这会让你接近。
SELECT *,
CASE
WHEN ISNUMERIC(REPLACE(REPLACE(REPLACE(Temperature, 'oC', ''), ' ', ''), '.', '')) = 1
THEN CONVERT(INT, (REPLACE(REPLACE(REPLACE(Temperature, 'oC', ''), ' ', ''), '.', '')))
ELSE NULL END AS TemperatureValue
FROM @Test
希望这可以帮助你。
答案 1 :(得分:1)
这个工作正常,但没有考虑我们保留的DQ问题,因为这是记录的
TRY_CAST(REPLACE(Temperature, 'oC', '') AS DECIMAL(19,8))