FirebirdSQL logo
 Types de donnéesLanguage de définition des données (DDL) 
Alternatives pour les apostrophes dans les littéraux de chaînes de caractères

Au lieu d’une double apostrophe (échappée), vous pouvez utiliser un autre caractère ou une paire de caractères.

Le mot-clé q ou Q précédant une chaîne de caractères entre guillemets indique à l’analyseur syntaxique que certaines paires gauche et droite de mêmes caractères sont des délimiteurs pour le littéral de chaîne intégré.

Syntaxe:
<alternate string literal> ::=
  { q | Q } <quote> <alternate start char>
  [ { <char> }... ]
  <alternate end char> <quote>
Note
Règles d’utilisation

Lorsque <caractère alternatif de début> est l’un des caractères '(', '{', '[' ou '<', alors <caractère alternatif de fin> doit êtreutilisé en conjonction avec un `partenaire' approprié, tel que ')', '}', ']' ou '>'. Dans les autres cas, <caractère de fin alternatif> est le même que <caractère de début alternatif>.

À l’intérieur d’une chaîne de caractères, c’est-à-dire des éléments <char>, il est possible d’utiliser des guillemets simples (non masqués).Chaque guillemet fera partie de la chaîne de caractères résultante.

Example 1. Utilisation d’apostrophes alternatives dans les chaînes de caractères
-- result: abc{def}ghi
SELECT Q'{abc{def}ghi}' FROM rdb$database;

-- result: That's a string
SELECT Q'!That's a string!' FROM rdb$database;
Example 2. Assemblage dynamique de requêtes à l’aide de chaînes de caractères.
EXECUTE BLOCK
RETURNS (
  RDB$TRIGGER_NAME CHAR(64)
)
AS
  DECLARE VARIABLE S VARCHAR(8191);
BEGIN
  S = 'SELECT RDB$TRIGGER_NAME FROM RDB$TRIGGERS WHERE RDB$RELATION_NAME IN ';
  S = S || Q'! ('SALES_ORDER', 'SALES_ORDER_LINE')!';
  FOR
    EXECUTE STATEMENT :S
    INTO :RDB$TRIGGER_NAME
  DO
    SUSPEND;
END
Jeu de caractères pour les chaînes littérales

Si nécessaire, un littéral de chaîne de caractères peut être précédé d’un nom de jeu de caractères qui commence par le préfixe de soulignement “_”.C’est ce qu’on appelle la syntaxe de l’introducteur. Son but est d’indiquer à Firebird comment interpréter et stocker une chaîne entrante.

Example 1. Syntaxe d’introduction pour les littéraux de chaînes de caractères
-- notez le préfixe '_'
INSERT INTO People
VALUES (_ISO8859_1 'Hans-Jörg Schäfer');