Module: @nginstack/engine/lib/string/toSqlIdentifier


(require("@nginstack/engine/lib/string/toSqlIdentifier"))(str)

Converte o valor informado em um identificador válido, como o nome de uma tabela ou coluna, de forma que ele possa ser utilizado de forma segura em consultas SQL.

Somente serão permitidas letras, números e o caractere "_". Caracteres acentuados serão substituídos pelos seus equivalentes não acentuados. Os demais caracteres serão removidos da string.

Apesar de alguns bancos de dados permitirem escapar os identificadores com aspas duplas, esta função opta por não usar esse recurso para escapar o identificador. O uso de aspas duplas torna o identificador sensível à diferença entre letras minúsculas e maiúsculas, dificultando a interoperabilidade do seu uso entre os distintos SGBDs suportados pelo sistema.

Identificadores precisam iniciar com uma letra e não podem ser palavras chaves SQL. Será gerado um erro se o identificador não satisfizer essas restrições.

O uso desta função é restrita para identificadores. Valores literais utilizados em filtros ou expressões de colunas retornadas por comandos SQL devem ser formatadas utilizando a função toSqlString.

Parameters:
Name Type Description
str *

Valor a ser convertido em um identificador.

Returns:

String que pode ser inserida em uma expressão SQL.

Type
string
Examples
const toSqlIdentifier = require('@nginstack/engine/lib/string/toSqlIdentifier');
const toSqlString = require('@nginstack/engine/lib/string/toSqlString');

function getRecord(tableName, key) {
  return database.query(
    'SELECT * ' +
    'FROM ' + toSqlIdentifier(tableName) + ' ' +
    'WHERE iKey = ' + toSqlString(key)
  );
}
const toSqlIdentifier = require('@nginstack/engine/lib/string/toSqlIdentifier');
toSqlIdentifier('Test'); // => 'Test'
toSqlIdentifier('Test Space'); // => 'TestSpace'
toSqlIdentifier('10A'); // => Error()
toSqlIdentifier(null); // => Error()
toSqlIdentifier(new Date(2019, 5, 10)); // => Error()
toSqlIdentifier('SELECT'); // => Error()