Search code examples
mysqlnode.jsheidisql

MySQL/NodeJS selecting where/like Japanese characters


I have the following query to select a list of vocabulary from a Japanese dictionary.

SELECT * FROM dictionary WHERE from_local = 1 AND (word like '%後%' or reading like '%後%')

Running this program in HeidiSQL, it works as expected. I feel like it could be a charset issue but I don't think it would work at all if this were the case. (See screenshot)

HeidiSQL screenshot

My problem occours when I try to run this query in my Node.js app. The results return empty.

I am using npm's mysql library. The dbQuery method is a helper function I made (Pastebin link)

import { dbQuery } from '../db'

const search = async(query) => {
    try {
        let sql = 'SELECT * FROM dictionary WHERE'
        sql += ' from_local = ? AND'
        sql += ' (word = ? OR reading = ?)'
        const params = [1, '%'+query+'%', '%'+query+'%']

        console.log('dictionary DB', {query, sql, params})

        return await dbQuery(sql, params)
    }
    catch(err) {
        console.log('search Error', err)
    }
}

Solution

  • Soultion I was being stupid

    I had forgot to change the = to LIKE in my query