2009-02-23 6 views
1

J'étudie la possibilité de mettre à jour notre application pour travailler avec des serveurs de bases de données autres que Firebird. Nous comptons sur "STARTING WITH" pour accéder à nos données hiérarchiques. Sans cela, je ne vois pas comment nous pourrions migrer vers une autre base de données sans une refonte sérieuse.Quel est l'équivalent de Firebirds "STARTING WITH" lors de l'utilisation d'autres bases de données, par ex. Oracle?

Si vous n'êtes pas familier avec "STARTS WITH", il vérifie simplement si un champ de chaîne commence par une chaîne particulière, par ex. ...

WHERE 'This is a test' STARTS WITH 'This is' ... 

retournera vrai. Si une colonne est indexée, l'index sera utilisé pour la comparaison.

Les autres serveurs de bases de données (en particulier Oracle/MSSQL) prennent-ils en charge "STARTING WITH" (ou "STARTS WITH")?

Répondre

8

Le SQL standard pour réaliser cela est quelque chose comme ... WHERE 'Ceci est un test' comme 'Ceci est%';

+0

Will "... LIKE 'est%' ..." utiliser un index de colonne si elle est disponible? Firebird il, mais « ... LIKE « % est% » ... », l'habitude. – norgepaul

+0

cela semble très dépendant SGBDR. Dans Oracle, il dépend de la cardinalité estimée du resul t set, et il y aurait toujours des méthodes d'accès à l'index moins conventionnelles comme un balayage d'index complet rapide en tant qu'options. –

+0

où un nom comme 'norge%' utilisera probablement un index. – tuinstoel

0

Certains DB Soutenons également OU GAUCHE (« Ceci est un test », 7) = « Ceci est » (bien que je ne me souviens pas si cela fait partie de la norme SQL).

0

Sélectionnez Oracle a une "Démarrer avec" http://www.oracle.com/pls/db10g/db10g.show_toc?which=main & = 'art b10759 & MaxLevel = 2 & section = & expand = 41274" > Oracle 10g Documentation pour les requêtes hiérarchisées. Cela fait partie d'Oracle depuis de nombreuses années (Oracle 8 au moins).

ne suis pas sûr de SQL Server.

+1

Oracles « START WITH » et Firebirds « COMMENCE AVEC » n'ont pas les mêmes fonctionnalités. Oracles spécifie une ligne racine, Firebirds est un comparateur de chaînes. – norgepaul