我想在取出一行表後取代列的所有字段。例如:如何在SQL select語句中使用replace替換列中的所有字段?
select * from employees;
我想用'MASKED'字符串隱藏所有員工姓名。
我只知道用替換函數只替換一列的字段,但不是所有的字段。請幫忙。
我想在取出一行表後取代列的所有字段。例如:如何在SQL select語句中使用replace替換列中的所有字段?
select * from employees;
我想用'MASKED'字符串隱藏所有員工姓名。
我只知道用替換函數只替換一列的字段,但不是所有的字段。請幫忙。
select employee_id, hire-date, 'MASKED' as employee_name, job, department, ....
在select
聲明,您選擇的字符串常量「掩蔽的」,並給它的別名employee_name
(或任何名稱要用於該列)。
不清楚爲什麼您需要首先從數據庫中獲取行,然後替換某個字段的值。這樣的過程只能分兩步執行:
返回的行,沒有必要在應用程序級別添加不必要的複雜性時執行此操作。您可以通過創建視圖並直接選擇視圖而不是表格來實現所需的遮罩。然後,你需要一個掩飾機制來解決問題中的表列(在你的案例中是員工的名字)。
你可以使用REGEXP_REPLACE與任何屏蔽字符員工姓名替換字符,則可能需要使用(x或*)
即
SELECT REGEXP_REPLACE('employee name', '\w', 'x') FROM DUAL;
REGEXP_REPLACE還支持regular expressions
因此,您的查詢可能會更改爲
select REGEXP_REPLACE(employee_name, '\w', '*'), field1, field2..... from employees;
或者你認爲我可以預見你想首先把所有行,然後操縱員工姓名
Create Or Replace View employees_v As
select REGEXP_REPLACE(employee_name, '\w', '*'), field1, field2..... from employees;
一個原因也許是因爲你沒有「權力」從Select * from employees;
在這種情況下,您可以考慮使用Oracle Data Masking Pack(https://www.oracle.com/database/data-masking-subsetting/index.html)以獲得更全面的屏蔽機制(如果需要並且可能實施)。實現它在單個表上的單個列的開銷不值得。
編輯您的問題,並提供樣本數據和期望的結果。 –
據瞭解,您需要所有員工,但不需要名稱爲MASKED? –
A **列**是一個「字段」 - 不知道你的意思是什麼*替換列的所有字段* ......或者你實際上是否想要看到*替換所有的列值**排***? .... –