Skip to content

Commit 952d3a9

Browse files
author
Kyle Farris
committed
Fixed #30
1 parent 063c5f8 commit 952d3a9

5 files changed

Lines changed: 410 additions & 388 deletions

File tree

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
TESTS = test/mysql/*.js test/mssql/*.js test/*.js
2-
#TESTS = test/mssql/01-tests-where.js
2+
#TESTS = test/mssql/01-tests-like.js
33
#TESTS = test/05-multiple-drivers.js
44
test:
55
mocha --timeout 5000 --reporter spec $(TESTS)

drivers/query_builder.js

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,7 @@ class GenericQueryBuilder {
604604

605605
for (let k in field) {
606606
let like_statement;
607-
const v = field[k];
607+
let v = field[k];
608608
k = this._protect_identifiers(k.trim());
609609

610610
// Make sure value is only string, number, or boolean
@@ -616,17 +616,32 @@ class GenericQueryBuilder {
616616
throw new Error("like(): You have provided an invalid number value as the second parameter. Only valid strings, numbers, and booleans are allowed.");
617617
}
618618

619+
// Make sure to escape the value...
620+
v = this._qb_escape(v);
621+
619622
if (side === 'none') {
620-
like_statement = k + not + ' LIKE ' + "'" + v + "'";
623+
like_statement = k + not + ` LIKE ${v}`;
621624
}
622625
else if (side === 'before' || side === 'left') {
623-
like_statement = k + not + ' LIKE ' + "'%" + v + "'";
626+
if (typeof v === 'string') {
627+
like_statement = k + not + ` LIKE ${v.substr(0, 1)}%${v.substr(1)}`;
628+
} else {
629+
like_statement = k + not + ` LIKE %${v}`;
630+
}
624631
}
625632
else if (side === 'after' || side === 'right') {
626-
like_statement = k + not + ' LIKE ' + "'" + v + "%'";
633+
if (typeof v === 'string') {
634+
like_statement = k + not + ` LIKE ${v.substr(0, v.length -1)}%${v.slice(-1)}`;
635+
} else {
636+
like_statement = k + not + ` LIKE ${v}%`;
637+
}
627638
}
628639
else if (side === 'both') {
629-
like_statement = k + not + ' LIKE ' + "'%" + v + "%'";
640+
if (typeof v === 'string') {
641+
like_statement = k + not + ` LIKE ${v.substr(0, 1)}%${v.substr(1, v.length -2)}%${v.slice(-1)}`;
642+
} else {
643+
like_statement = k + not + ` LIKE %${v}%`;
644+
}
630645
}
631646
else {
632647
throw new Error("like(): Invalid direction provided!");

0 commit comments

Comments
 (0)