我有一些字符串,我必须在数据库中插入但我想先修改它们的值,如果它们属于某些条件。
例如,我有字符串Epatite
,Epatite B
,EpatiteáB
,EpB3
我希望它们在插入之前更改为EP B
分贝。
这是我的代码:
// vaccines[index] is the string to compare
var vac = makeUniform(vaccines[index]);
const queryInsert = {
text: 'INSERT INTO coverages (vaccine) VALUES ($1) ON CONFLICT DO NOTHING;',
values: [vac]
}
var printText = '[INSERT Italy IN coverages]';
promises.push(postgreSQLlib.query(queryInsert, printText, false));
function makeUniform(val) {
if(val === 'DIF' || val === 'Difterite') {
return 'DIPH'; // diphtheria
}
else if(val === 'Epatite' || val === 'Epatite B' || val === 'EpatiteáB' || val === 'EpB3') {
return 'EP B'; // hepatitis B
}
else if(val === 'HIB' || val === 'Hib3' || val === 'Hib') {
return 'HIB'; // haemophilus influenzae B
}
else {
return val;
}
}
当我在psql shell上执行SELECT DISTINCT vaccine FROM coverages ORDER BY vaccine;
时,我得到:
DIPH
DT-DTP3
DTP3
EP A
EP B
EpatiteáB
Hib
HIB
M-MPR1
M-MPR1-MPRV ...
EpatiteáB
理论上应该更改EP B
。
为什么它不起作用?
vaccines[index]
来自在线pdf,我使用textract
package Node.js进行网页抓取。
由于
答案 0 :(得分:1)
首先尝试使用以下方法清理开发数据库:
UPDATE coverages set vaccine = 'EP B' WHERE vaccine LIKE 'Epatite%' OR vaccine = 'EpB3';
为其他人做类似的事情。
答案 1 :(得分:1)
尝试再添加一个条件=(val ===“Epatite%E1B%21”)
function makeUniform(val) {
if(val === 'DIF' || val === 'Difterite') {
return 'DIPH'; // diphtheria
}
else if(val === 'Epatite' || val === 'Epatite B' || val==="Epatite%E1B%21" || val === 'EpatiteáB' || val === 'EpB3') {
return 'EP B'; // hepatitis B
}
else if(val === 'HIB' || val === 'Hib3' || val === 'Hib') {
return 'HIB'; // haemophilus influenzae B
}
else {
return val;
}
}