如何使用别名将 SQL LEFT 放入书架?
How do I get SQL LEFT with alias into bookshelf?
我需要这个 SQL
(在 mysql 控制台中完美运行):
SELECT LEFT(authors.last_name,1) AS first_char
在"bookshelf.js"
.
当我走到这一步时:
let result = await qb.column('last_name').select().from('authors').as('first_char');
我无法得到
let result = await qb.column('last_name').select('LEFT(authors.last_name,1)').from('authors').as('first_char');
这样进行。
它导致以下错误:
Error: ER_BAD_FIELD_ERROR: Unknown column 'LEFT(authors.last_name,1)' in 'field list'
这对我来说没有意义,因为 authors.last_name
列仍然存在。
.select()
防止 SQL 注入,因此您不能只是将随机 SQL 传递给它并期望它起作用。您需要为此使用原始表达式:
qb.column('last_name').select(qb.raw('LEFT(authors.last_name,1)')).from('authors').as('first_char');
关于这一点,从技术上讲,这不是书架问题,因为查询生成器只是 knex。
我需要这个 SQL
(在 mysql 控制台中完美运行):
SELECT LEFT(authors.last_name,1) AS first_char
在"bookshelf.js"
.
当我走到这一步时:
let result = await qb.column('last_name').select().from('authors').as('first_char');
我无法得到
let result = await qb.column('last_name').select('LEFT(authors.last_name,1)').from('authors').as('first_char');
这样进行。
它导致以下错误:
Error: ER_BAD_FIELD_ERROR: Unknown column 'LEFT(authors.last_name,1)' in 'field list'
这对我来说没有意义,因为 authors.last_name
列仍然存在。
.select()
防止 SQL 注入,因此您不能只是将随机 SQL 传递给它并期望它起作用。您需要为此使用原始表达式:
qb.column('last_name').select(qb.raw('LEFT(authors.last_name,1)')).from('authors').as('first_char');
关于这一点,从技术上讲,这不是书架问题,因为查询生成器只是 knex。