字符串比较似乎不起作用

时间:2018-04-03 07:47:24

标签: javascript string string-comparison

我有一些字符串,我必须在数据库中插入但我想先修改它们的值,如果它们属于某些条件。

例如,我有字符串EpatiteEpatite BEpatiteáBEpB3我希望它们在插入之前更改为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。 为什么它不起作用?

编辑1

vaccines[index]来自在线pdf,我使用textract package Node.js进行网页抓取。

由于

2 个答案:

答案 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;
    }
}