我有一個存盤程序并且有多個過濾器有一個工資范圍過濾器我正在輸入最小值和最大值作為用逗號分隔的字串就像200,5000它作業正常一樣,但現在我需要包含多個范圍,2,400|400,800并且我需要拆分它們并添加條件介于或小于大于 - 請幫助。
IF (@Salary <> '')
BEGIN
SELECT @salaryStr = '>= '
REPLACE(@Salary, ',' , ' AND Salary <= ') '';
SET @query = @query ' AND Salary ' @salaryStr ' '
END
它在一個范圍內作業正常,但我需要一些東西來處理上面提到的多個范圍。我將范圍作為字串發送2,400|400,700- 我怎樣才能做到這一點?我嘗試使用string_splitSQL Server 的功能,但無法讓它執行我需要的操作 - 不確定在這種情況下如何使用它。
uj5u.com熱心網友回復:
舉'2,400|400,800','|'個例子:
select a.value as range,
min(b.value) as from_value,
max(b.value) as to_value
from string_split('2,400|400,800','|') a
cross apply string_split(a.value,',') b
group by a.value;
結果:
range |from_value|to_value|
------- ---------- --------
2,400 |2 |400 |
400,800|400 |800 |
您可能希望將 from/to_value(s) 轉換為正確的資料型別
編輯:將值應用于范圍條件,在此示例中,多個范圍是連續的。因此,為動態 SQL選擇 min()from_value和 max() :to_value
select min(b.value) as from_value,
max(b.value) as to_value
from string_split('2,400|400,800','|') a
cross apply string_split(a.value,',') b;
from_value|to_value|
---------- --------
2 |800 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/537433.html
上一篇:為什么當我使用Excel用戶表單更新MSAccess中的表格時,需要更新的資料不可見?
下一篇:無法在其方法之外訪問api回應
