Skip to content

Commit 8a333a8

Browse files
committed
Merge pull request brianc#256 from danrzeppa/dan-mssqllen
MSSQL LENGTH function fix
2 parents 40272b5 + 45b9297 commit 8a333a8

2 files changed

Lines changed: 40 additions & 0 deletions

File tree

lib/dialect/mssql.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,14 @@ Mssql.prototype.visitDrop = function(drop) {
234234
return ['IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES '+whereClause+') BEGIN '+dropResult.join(' ')+' END'];
235235
};
236236

237+
Mssql.prototype.visitFunctionCall = function(functionCall) {
238+
var name=functionCall.name
239+
// override the LENGTH function since mssql calls it LEN
240+
if (name=="LENGTH") name="LEN"
241+
var txt = name + '(' + functionCall.nodes.map(this.visit.bind(this)).join(', ') + ')';
242+
return [txt];
243+
};
244+
237245
Mssql.prototype.visitOrderBy = function(orderBy) {
238246
var result=Mssql.super_.prototype.visitOrderBy.call(this, orderBy);
239247
var offsetNode=orderBy.msSQLOffsetNode;

test/dialects/function-tests.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
'use strict';
2+
3+
var Harness = require('./support');
4+
var Sql = require('../../lib');
5+
6+
var post = Harness.definePostTable();
7+
8+
Harness.test({
9+
query: post.select(Sql.functions.LENGTH(post.content)),
10+
pg: {
11+
text : 'SELECT LENGTH("post"."content") FROM "post"',
12+
string: 'SELECT LENGTH("post"."content") FROM "post"'
13+
},
14+
sqlite: {
15+
text : 'SELECT LENGTH("post"."content") FROM "post"',
16+
string: 'SELECT LENGTH("post"."content") FROM "post"'
17+
},
18+
mysql: {
19+
text : 'SELECT LENGTH(`post`.`content`) FROM `post`',
20+
string: 'SELECT LENGTH(`post`.`content`) FROM `post`'
21+
},
22+
mssql: {
23+
text : 'SELECT LEN([post].[content]) FROM [post]',
24+
string: 'SELECT LEN([post].[content]) FROM [post]'
25+
},
26+
oracle: {
27+
text : 'SELECT LENGTH("post"."content") FROM "post"',
28+
string: 'SELECT LENGTH("post"."content") FROM "post"'
29+
},
30+
params: []
31+
});
32+

0 commit comments

Comments
 (0)