OVH Cloud OVH Cloud

select avec un %

18 réponses
Avatar
renotm
Bonjour,

j'ai une table avec des champs qui se terminent par le caractère %. Je
voudrais récupérer uniquement ces lignes.

Si je fais :

select * from matable where name like '%%';

ca me retourne tout. Sauriez vous comment echapper ce caractère % ???

Merci d'avance.

ps : je suis sous Oracle.
--
Renotm
http://www.expo7.com - Exposez Vos Photos

8 réponses

1 2
Avatar
Igor Racic
Oracle n'utilise pas le mot 'collation'.
Les choses sont autour les paramètres, variables, functions NLS*.

Pour 10g:
http://download-west.oracle.com/docs/cd/B14117_01/server.101/b10749/toc.htm

Igor


Fred BROUARD - SQLpro wrote:
je connaissait l'article de Peter, mais je dois avouer que je n'ai
trouvé nulle parta dans la doc Oracle la liste des collations, ni même
le mot collation...

Aurait tu des infos sur le sujet ?
Avatar
Fred BROUARD - SQLpro
franchement pas simple la façon dont s'est implémenté avec les NLS et les
fonctions et paramètres NLS_UPPER, NLS_SORT, alors qu'avec une collation c'est
d'une simplicité enfantine !

Je n'imagine pas grand mode utiliser ces NLS combiné à une recherche en regexp !

Voici qui ne va pas faire diminuer le coût d'exploitation et d'administration
d'Oracle....

A +

Igor Racic a écrit:

Oracle n'utilise pas le mot 'collation'.
Les choses sont autour les paramètres, variables, functions NLS*.

Pour 10g:
http://download-west.oracle.com/docs/cd/B14117_01/server.101/b10749/toc.htm

Igor


Fred BROUARD - SQLpro wrote:

je connaissait l'article de Peter, mais je dois avouer que je n'ai
trouvé nulle parta dans la doc Oracle la liste des collations, ni même
le mot collation...

Aurait tu des infos sur le sujet ?





--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
Igor Racic
Fred BROUARD - SQLpro wrote:
franchement pas simple la façon dont s'est implémenté avec les NLS et
les fonctions et paramètres NLS_UPPER, NLS_SORT, alors qu'avec une
collation c'est d'une simplicité enfantine !

Je n'imagine pas grand mode utiliser ces NLS combiné à une recherche en
regexp !

Voici qui ne va pas faire diminuer le coût d'exploitation et
d'administration d'Oracle....



Dans Oracle tu peux faire plein des bêtises et complications.
Si tu commence avec la bonne base ton coût peut rester gêrable.

Derrièr la complexité, parfois, est la puissance caché.
Regarde les regexp. Regarde les partitionnements, possibilité de
SQL, etc etc...

Derrièr la simplicité, suivante, il y a limitation qui la suivi.
Tu as vu que c'est possible de faire différentes ORDER BY(par
langue) avec le même champ. Tu peux choisir de trier
binairement, traiter les characters différément etc.

Mais, d'autre côté, si la "simplicité enfantine" te convient
parfaitement - tant mieux.
Mais, il ne faut pas trôp vite juger les autres approches.
"Different strokes for different folks"


Igor




A +

Igor Racic a écrit:


Oracle n'utilise pas le mot 'collation'.
Les choses sont autour les paramètres, variables, functions NLS*.

Pour 10g:
http://download-west.oracle.com/docs/cd/B14117_01/server.101/b10749/toc.htm


Igor


Fred BROUARD - SQLpro wrote:

je connaissait l'article de Peter, mais je dois avouer que je n'ai
trouvé nulle parta dans la doc Oracle la liste des collations, ni
même le mot collation...

Aurait tu des infos sur le sujet ?






Avatar
Fred BROUARD - SQLpro
salut Igor,

Igor Racic a écrit:
Fred BROUARD - SQLpro wrote:

franchement pas simple la façon dont s'est implémenté avec les NLS et
les fonctions et paramètres NLS_UPPER, NLS_SORT, alors qu'avec une
collation c'est d'une simplicité enfantine !

Je n'imagine pas grand mode utiliser ces NLS combiné à une recherche
en regexp !

Voici qui ne va pas faire diminuer le coût d'exploitation et
d'administration d'Oracle....




Dans Oracle tu peux faire plein des bêtises et complications.
Si tu commence avec la bonne base ton coût peut rester gêrable.

Derrièr la complexité, parfois, est la puissance caché.
Regarde les regexp. Regarde les partitionnements, possibilité de
SQL, etc etc...

Derrièr la simplicité, suivante, il y a limitation qui la suivi.
Tu as vu que c'est possible de faire différentes ORDER BY(par
langue) avec le même champ. Tu peux choisir de trier
binairement, traiter les characters différément etc.




Quand même Igor, sache que la norme SQL est généralement plus intelligente, plus
élégante et plus puissament simple que la plupart des discours des éditeurs. Ne
pas oublier que ce sont les éditeurs eux mêmes qui la font ! Ces gens là sont
loin d'être des imbéciles et ils reprennent en général ce qui est pratique,
simple efficace et performant. Par exemple la notion de SEQUENCE (Oracle) comme
la notion d'IDENTITY (SYBASE / MS SQL Server) a été introduite dans la norme
SQL:1999...

Quand tu me dit que du côté du ORDER BY c'est possible de faire beacoup de tri
très différents sous Oracle, je te dit oui. Mais sous SQL Server, tu à la même
possibilité, mais en beaucoup plus simple : plus de 700 tris différents sont
possibles ! Un seul paramètre à spécifier : le nom de la collation. De plus la
norme SQL à spécifié la plupart des collations basiques. Si j'ai besoin du mode
d'emploi d'Oracle en Anglais et du dictionnaire des différents tris pour ce
faire, alors qu'avec la norme je sais ou je vais, je constate donc qu'Oracle me
fait perdre du temps et donc de l'argent...
Je ne suis pas spécialiement pour MS, mais eux ont fait un effort important pour
se conformer à la norme. Comme IBM d'ailleurs. Alors qu'Oracle joue toujours son
"cavalier seul". C'est d'ailleurs ce qui a perdu IBM il y a deux décénnies !
Et je te fais le pari qu'en continuant à se foutre de la norme SQL, Oracle se
fera bouffer dans quelques années. Je lui donne 3 ans max s'il ne change pas de
stratégie !


Mais, d'autre côté, si la "simplicité enfantine" te convient
parfaitement - tant mieux.



La simplicité qui masque la complexité et étend les possibilités, oui, celle là
me convient mieux que l'absconce complexité d'Oracle.

Mais, il ne faut pas trôp vite juger les autres approches.
"Different strokes for different folks"


Igor




A +

Igor Racic a écrit:


Oracle n'utilise pas le mot 'collation'.
Les choses sont autour les paramètres, variables, functions NLS*.

Pour 10g:
http://download-west.oracle.com/docs/cd/B14117_01/server.101/b10749/toc.htm


Igor


Fred BROUARD - SQLpro wrote:

je connaissait l'article de Peter, mais je dois avouer que je n'ai
trouvé nulle parta dans la doc Oracle la liste des collations, ni
même le mot collation...

Aurait tu des infos sur le sujet ?












--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
Igor Racic
Bonjour

Je dirait que tu a un peu inversé les choses. Les éditeurs font les
nouveautés et après ils essayent (avec les autres éditeurs) de le faire
partie de standard.
Tu dit que la SEQUENCE fait partie de SQL:1999, mais tu sais depuis
quand la sequence est dans Oracle ? De la version 6, année 1988. Ou
était SQL:1999 à 1988?

Oracle a implémenté les fonctions analytique qui n'est sont pas dans le
standard (encore?) mais ils sont très efficace.
Et tu vas dire que ça n'est pas correct (non standard) ?

Regarde les basés plus populaire. Ils sont certifiés seulement avec
"Entry level SQL92". Entry level. C'est à dire on ne peut pas parler de
conformité total. Ils implémentent les choses un peu différemment.

Tu peux dire ça ("cavalier seul") à SQL Server, aussi. Comment tu fait
la création d'une role dans SQL Server?
Avec
EXEC sp_addrole 'name_of_role',
pêut-être ?
Ou tu utilise la syntaxe standarde de SQL
CREATE ROLE name_of_role ?


Igor



Quand même Igor, sache que la norme SQL est généralement plus
intelligente, plus élégante et plus puissament simple que la plupart des
discours des éditeurs. Ne pas oublier que ce sont les éditeurs eux mêmes
qui la font ! Ces gens là sont loin d'être des imbéciles et ils
reprennent en général ce qui est pratique, simple efficace et
performant. Par exemple la notion de SEQUENCE (Oracle) comme la notion
d'IDENTITY (SYBASE / MS SQL Server) a été introduite dans la norme
SQL:1999...


Quand tu me dit que du côté du ORDER BY c'est possible de faire beacoup
de tri très différents sous Oracle, je te dit oui. Mais sous SQL Server,
tu à la même possibilité, mais en beaucoup plus simple : plus de 700
tris différents sont possibles ! Un seul paramètre à spécifier : le nom
de la collation. De plus la norme SQL à spécifié la plupart des
collations basiques. Si j'ai besoin du mode d'emploi d'Oracle en Anglais
et du dictionnaire des différents tris pour ce faire, alors qu'avec la
norme je sais ou je vais, je constate donc qu'Oracle me fait perdre du
temps et donc de l'argent...
Je ne suis pas spécialiement pour MS, mais eux ont fait un effort
important pour se conformer à la norme. Comme IBM d'ailleurs. Alors
qu'Oracle joue toujours son "cavalier seul". C'est d'ailleurs ce qui a
perdu IBM il y a deux décénnies !
Et je te fais le pari qu'en continuant à se foutre de la norme SQL,
Oracle se fera bouffer dans quelques années. Je lui donne 3 ans max s'il
ne change pas de stratégie !


Mais, d'autre côté, si la "simplicité enfantine" te convient
parfaitement - tant mieux.




La simplicité qui masque la complexité et étend les possibilités, oui,
celle là me convient mieux que l'absconce complexité d'Oracle.

Mais, il ne faut pas trôp vite juger les autres approches.
"Different strokes for different folks"


Igor




A +

Igor Racic a écrit:


Oracle n'utilise pas le mot 'collation'.
Les choses sont autour les paramètres, variables, functions NLS*.

Pour 10g:
http://download-west.oracle.com/docs/cd/B14117_01/server.101/b10749/toc.htm


Igor


Fred BROUARD - SQLpro wrote:

je connaissait l'article de Peter, mais je dois avouer que je n'ai
trouvé nulle parta dans la doc Oracle la liste des collations, ni
même le mot collation...

Aurait tu des infos sur le sujet ?













Avatar
Fred BROUARD - SQLpro
Igor Racic a écrit:
Bonjour

Je dirait que tu a un peu inversé les choses. Les éditeurs font les
nouveautés et après ils essayent (avec les autres éditeurs) de le faire
partie de standard.



justement non, ce sont les erreurs des éditeurs qui n'ont pas été répercutés
dans le standard. Regarde les différents moyens de faire des jointures externes :
Oracle avec (+)= et Sybase avec *= ...
Aucune de ces deux solutions n'a été reprise car aucune n'était élégante ni
intelligentes. Ces deux solutions avaient d'énormes lacunes !

Tu dit que la SEQUENCE fait partie de SQL:1999, mais tu sais depuis
quand la sequence est dans Oracle ? De la version 6, année 1988. Ou
était SQL:1999 à 1988?



Mais ce n'est pas QUE oracle qui a utilisé la notion de séquence... Ingres,
Interbase et bien d'autre l'ont fait, parce ça c'était intelligent !
En revanche la récursivité façon Oracle, n'a pas été retenu, même si la norme
SQL s'en trouve relativement proche. En revanche elle est implantée dans la
future version de SQL Server exactement de façon normative...


Oracle a implémenté les fonctions analytique qui n'est sont pas dans le
standard (encore?) mais ils sont très efficace.



Tous l'on fait, mais les solutions n'ont pas convaincue le comité de
normalisation, car il y a trop de zone d'ombre. En revanche a été ajouté les
calculs d'agrégats EVERY et ANY/SOME !

Et tu vas dire que ça n'est pas correct (non standard) ?



Exact ! Comment calculer un MEDIANE par exemple ???


Regarde les basés plus populaire. Ils sont certifiés seulement avec
"Entry level SQL92". Entry level. C'est à dire on ne peut pas parler de
conformité total. Ils implémentent les choses un peu différemment.



Oracle n'étais, malgré son discours, toujours pas entry level sur SQL 2
puisqu'avant la version 8i, les INNER et OUTER JOIN n'existaient toujours pas !

En revanche ils sont apparus dès la version 7 de SQL Server !



Tu peux dire ça ("cavalier seul") à SQL Server, aussi. Comment tu fait
la création d'une role dans SQL Server?
Avec
EXEC sp_addrole 'name_of_role',
pêut-être ?
Ou tu utilise la syntaxe standarde de SQL
CREATE ROLE name_of_role ?



Le plus important n'est pas le respect de la syntaxe absolue, mais que l'esprit
y soit. Dans ce cas, c'est le rôle qui est important et pas la manière dont il
est créé.

Dans le cas des collations, ce sont les collations + le jeu de caractère, et les
traitement associés : COLLATE, TRANSLATE et TRANSLATION (SQL 92). Or Oracle, a
fait, me semble t-il l'impasse sur l'un des deux éléments : SET et COLLATION...



Igor




Mon but n'est pas de détruire Oracle, ni d'encenser SQL Server, mon but est de
dire que si chaque éditeur se conformait le plus possible à la norme, ce serait
un avantage pour tous. Or loin de cela, Oracle est le plus réticent à introduire
la norme dans son dialecte SQL. En revanche, c'est le contraire chez MS SQL
Server on l'on ressere le plus possible le SGBDR vers la norme SQL.

Un petit exemple, en plus de NULLIF MS à ajouté COALESCE qui est la norme.
Oracle en est toujours à son NVL !
Autre exemple en plus de son GETDATE MS à ajouté CURRENT_TIMESTAMP qui est la
norme. Oracle en est toujours à SYSDATE et NOW !!!!

Ce ne sont pas des choses bien compliqué à faire pour un éditeur comme Oracle,
mais s'il fait l'impasse sur ces petites choses, cela marque bien sa volonté
affichée de s'écarter de la norme afin qu'il soit plus difficile de changer de
SGBDR. Donc une stratégie de faire de ses clients des prisonniers du code SQL
propriétaire Oracle... La même stratégie qui a value à IBM que ses clients les
délaissent par ras le bol de l'incompatibilité.
Or nous sommes à une époque ou l'informatique, de par sa nature "internautique"
devient mondiale et franchit la barrière des pays, des lois, de l'économie et
des technologie "propriétaires". Ce qui marche bien, c'est HTML, C/C++, Java,
XML... et pas Oracle Forms ou C# !

A +



Quand même Igor, sache que la norme SQL est généralement plus
intelligente, plus élégante et plus puissament simple que la plupart
des discours des éditeurs. Ne pas oublier que ce sont les éditeurs eux
mêmes qui la font ! Ces gens là sont loin d'être des imbéciles et ils
reprennent en général ce qui est pratique, simple efficace et
performant. Par exemple la notion de SEQUENCE (Oracle) comme la notion
d'IDENTITY (SYBASE / MS SQL Server) a été introduite dans la norme
SQL:1999...





Quand tu me dit que du côté du ORDER BY c'est possible de faire
beacoup de tri très différents sous Oracle, je te dit oui. Mais sous
SQL Server, tu à la même possibilité, mais en beaucoup plus simple :
plus de 700 tris différents sont possibles ! Un seul paramètre à
spécifier : le nom de la collation. De plus la norme SQL à spécifié la
plupart des collations basiques. Si j'ai besoin du mode d'emploi
d'Oracle en Anglais et du dictionnaire des différents tris pour ce
faire, alors qu'avec la norme je sais ou je vais, je constate donc
qu'Oracle me fait perdre du temps et donc de l'argent...
Je ne suis pas spécialiement pour MS, mais eux ont fait un effort
important pour se conformer à la norme. Comme IBM d'ailleurs. Alors
qu'Oracle joue toujours son "cavalier seul". C'est d'ailleurs ce qui a
perdu IBM il y a deux décénnies !
Et je te fais le pari qu'en continuant à se foutre de la norme SQL,
Oracle se fera bouffer dans quelques années. Je lui donne 3 ans max
s'il ne change pas de stratégie !


Mais, d'autre côté, si la "simplicité enfantine" te convient
parfaitement - tant mieux.





La simplicité qui masque la complexité et étend les possibilités, oui,
celle là me convient mieux que l'absconce complexité d'Oracle.

Mais, il ne faut pas trôp vite juger les autres approches.
"Different strokes for different folks"


Igor




A +

Igor Racic a écrit:


Oracle n'utilise pas le mot 'collation'.
Les choses sont autour les paramètres, variables, functions NLS*.

Pour 10g:
http://download-west.oracle.com/docs/cd/B14117_01/server.101/b10749/toc.htm


Igor


Fred BROUARD - SQLpro wrote:

je connaissait l'article de Peter, mais je dois avouer que je n'ai
trouvé nulle parta dans la doc Oracle la liste des collations, ni
même le mot collation...

Aurait tu des infos sur le sujet ?



















--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
Igor Racic
Bonjour,


Tu dit que la SEQUENCE fait partie de SQL:1999, mais tu sais depuis
quand la sequence est dans Oracle ? De la version 6, année 1988. Ou
était SQL:1999 à 1988?



Mais ce n'est pas QUE oracle qui a utilisé la notion de séquence...
Ingres, Interbase et bien d'autre l'ont fait, parce ça c'était
intelligent !
En revanche la récursivité façon Oracle, n'a pas été retenu, même si la
norme SQL s'en trouve relativement proche. En revanche elle est
implantée dans la future version de SQL Server exactement de façon
normative...



Le point est que les sequences ont était dèja bien bien établis avant le
standard...



Oracle a implémenté les fonctions analytique qui n'est sont pas dans
le standard (encore?) mais ils sont très efficace.




Tous l'on fait, mais les solutions n'ont pas convaincue le comité de
normalisation, car il y a trop de zone d'ombre. En revanche a été ajouté
les calculs d'agrégats EVERY et ANY/SOME !

Et tu vas dire que ça n'est pas correct (non standard) ?




Exact ! Comment calculer un MEDIANE par exemple ???



Les fonction analitiques (dans Oracle) sont les fonctions qui font les
opérations dans les lignes de "RecordSet" même.
Cette choses n'existent pas dans le standard, mais, un jour ou outre,
vont venir. Inévitable.

Pour moi, c'est plus importante de savoir les points fortes et faibles
de chaque approche, et essayer de faire le mieux avec ce que c'est
disponible.
Avec les constraints des applications dans les projets (avec la taille
un peu plus serieuse), si tu ignore les choses avancées et la
technologie, tu te mets plus proche d'echècs.
Je ne peux pas imaginer que dans situation quand il faut optimiser
quelque chose, tu viens à manager lui disent "Je ne vais pas appliquer
ça, c'est pas standard".



Regarde les basés plus populaire. Ils sont certifiés seulement avec
"Entry level SQL92". Entry level. C'est à dire on ne peut pas parler
de conformité total. Ils implémentent les choses un peu différemment.




Oracle n'étais, malgré son discours, toujours pas entry level sur SQL 2
puisqu'avant la version 8i, les INNER et OUTER JOIN n'existaient
toujours pas !

En revanche ils sont apparus dès la version 7 de SQL Server !



J'ai l'impression que tu a confondu Entry-level et Transitional-level
(Entry-level n'a pas les JOIN)
NIST a certifié SQL92 Entry-level à Oracle pour la version 7.0 à 1993.

Si tu regarde un peu les sites des gens qui sont dans la commission
pour la standardisation tu verras qu'ils ne sont pas autant ravis avec
le comportement de Microsoft.

Aussi, tu est un peu 'tifo':
- "avant la version 8i" (3/4 1999)
- "dès la version 7 de SQL Server" (Nov 1998)


Mon but n'est pas de détruire Oracle, ni d'encenser SQL Server, mon but
est de dire que si chaque éditeur se conformait le plus possible à la
norme, ce serait un avantage pour tous. Or loin de cela, Oracle est le
plus réticent à introduire la norme dans son dialecte SQL. En revanche,
c'est le contraire chez MS SQL Server on l'on ressere le plus possible
le SGBDR vers la norme SQL.



Quelqu'un peut se demander, alors - si la situation est autant bien
pour SQL Server, pourquoi ils n'ont pas certifié pour Full ou au moins
Intermediate-level de standard SQL bien avant que NIST est arreté à le
faire ?

Les standards sont OK. En plus, il faut être réaliste.


Autre exemple en plus de son GETDATE MS à ajouté CURRENT_TIMESTAMP qui
est la norme. Oracle en est toujours à SYSDATE et NOW !!!!


NOW ?


Ce ne sont pas des choses bien compliqué à faire pour un éditeur comme
Oracle, mais s'il fait l'impasse sur ces petites choses, cela marque
bien sa volonté affichée de s'écarter de la norme afin qu'il soit plus
difficile de changer de SGBDR. Donc une stratégie de faire de ses
clients des prisonniers du code SQL propriétaire Oracle... La même
stratégie qui a value à IBM que ses clients les délaissent par ras le
bol de l'incompatibilité.



Non, c'est le compromis.

Or nous sommes à une époque ou l'informatique, de par sa nature
"internautique" devient mondiale et franchit la barrière des pays, des
lois, de l'économie et des technologie "propriétaires". Ce qui marche
bien, c'est HTML, C/C++, Java, XML... et pas Oracle Forms ou C# !



OK, c'est un peu plus ouvert, mais dire que Java n'est pas propriètaire
n'est pas vrais.

En tout cas, cette discussion est devenue un peu trop
academique/theretique/politique pour moi...



Igor
Avatar
Fred BROUARD - SQLpro
salut,

Igor Racic a écrit:

Bonjour,


En tout cas, cette discussion est devenue un peu trop
academique/theretique/politique pour moi...




non, c'est un bon échange... Cela permet de confronter les points de vu.

Personne n'a tort ni raison. Simplement des opinions qui, par exemple, peuvent
compter pour beaucoup dans le choix d'une solution ou d'une autre...



Igor



En tout cas, je te félicite pour ton français, car je ne suis pas capable de
parler un seul mot d'une langue slave !

A +

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
1 2