Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
memo:sql [18/07/2019 10:05] – Augmentation de la taille des titres Arnaud Jacqueminmemo:sql [03/11/2025 17:35] (Version actuelle) – [MSSQL : trouver les verrous sur une table] Arnaud Jacquemin
Ligne 13: Ligne 13:
  
  
-===== NVL =====+===== Gérer valeur NULL ===== 
 + 
 +Utiliser la fonction standard COALESCE : 
  
 <code sql> <code sql>
 -- Téléphone fixe, ou mobile sinon -- Téléphone fixe, ou mobile sinon
-SELECT NVL(cli.telephonefixe, cli.telephonemobile) AS telephone+SELECT COALESCE (cli.telephonefixe, cli.telephonemobile) AS telephone
 FROM clients FROM clients
 </code> </code>
  
-Doc : [[http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions105.htm|Oracle]]+Doc : [[https://en.wikibooks.org/wiki/Structured_Query_Language/SELECT:_IS_NULL_Predicate#Coalesce()_and_Similar_Functions|Wikibooks]], [[https://docs.microsoft.com/fr-fr/sql/t-sql/language-elements/coalesce-transact-sql|MS SQL]] 
 + 
 +Chez Oracle il existe aussi une fonction non standard Doc : [[http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions105.htm|NVL]]
  
 ===== Switch Case ===== ===== Switch Case =====
Ligne 38: Ligne 42:
 Doc : [[http://docs.oracle.com/cd/B13789_01/server.101/b10759/expressions004.htm|Oracle]] Doc : [[http://docs.oracle.com/cd/B13789_01/server.101/b10759/expressions004.htm|Oracle]]
  
-===== Portion de chaîne : SUBSTR =====+===== Portion de chaîne =====
  
 +**Oracle :**
 + 
 <code sql> <code sql>
 SELECT SELECT
Ligne 46: Ligne 52:
 FROM produits_coloris FROM produits_coloris
 </code> </code>
- 
  
 Doc : [[http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions162.htm|Oracle]] Doc : [[http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions162.htm|Oracle]]
 +
 +**MS SQL Server :**
 +
 +<code sql>
 +SELECT
 + -- Séparer heures et minutes
 + SUBSTRING (a.actvissalheurearr, 1, 2) + ':' + SUBSTRING (a.actvissalheurearr, 3, 2) AS "Heure"
 +FROM ACTEVISITESALARIE a
 +</code>
 +
 +Doc : https://docs.microsoft.com/en-us/sql/t-sql/functions/substring-transact-sql?view=sql-server-ver15
  
 Pour le faire selon une expression régulière : [[http://docs.oracle.com/cd/B14117_01/server.101/b10759/functions116.htm|REGEXP_SUBSTR chez Oracle]], [[http://www.postgresql.org/docs/9.1/static/functions-matching.html#FUNCTIONS-POSIX-REGEXP|SUBSTRING w/ POSIX Regular Expressions chez PostgreSQL]] Pour le faire selon une expression régulière : [[http://docs.oracle.com/cd/B14117_01/server.101/b10759/functions116.htm|REGEXP_SUBSTR chez Oracle]], [[http://www.postgresql.org/docs/9.1/static/functions-matching.html#FUNCTIONS-POSIX-REGEXP|SUBSTRING w/ POSIX Regular Expressions chez PostgreSQL]]
Ligne 83: Ligne 99:
  
 === Oracle === === Oracle ===
- 
  
 <code sql> <code sql>
Ligne 104: Ligne 119:
 Doc : [[https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format|MySQL]] Doc : [[https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format|MySQL]]
  
 +
 +=== MS SQL Server ===
 +
 +<code sql>
 +select CONVERT(varchar, LOGDate, 103)  
 +from latable
 +-- Donne par exemple : '28/03/2020'
 +</code>
 +
 +Doc : [[https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15#date-and-time-styles|CAST and CONVERT (Transact-SQL)]]
 ==== Date -> numéro de semaine ==== ==== Date -> numéro de semaine ====
  
Ligne 126: Ligne 151:
  
 ==== Texte -> date ==== ==== Texte -> date ====
 +
 +=== Oracle ===
  
 Fonction TO_DATE Fonction TO_DATE
Ligne 144: Ligne 171:
 </code> </code>
  
 +Ou en précisant le format :
 +<code sql>
 +SELECT * FROM latable
 +WHERE date = CONVERT(date, '20210825', 112)
 +</code>
 Doc : https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017#g-using-cast-and-convert-with-datetime-data Doc : https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017#g-using-cast-and-convert-with-datetime-data
 +
 +
 +=== MySQL ===
 +
 +<code sql>
 +SELECT STR_TO_DATE("2022/03/25", "%Y/%m/%d"
 +</code>
 +
 +Doc : [[https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_str-to-date| STR_TO_DATE(str,format)]] et [[https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format|formats]]
  
  
Ligne 211: Ligne 252:
  
 Doc : [[http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions075.htm|Oracle 10g]] Doc : [[http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions075.htm|Oracle 10g]]
 +
 +===== Plus grande valeur entre plusieurs lignes =====
 +
 +Par exemple, ne garder d'une table que la ligne la plus récente pour chacun des utilisateurs...
 +
 +<code sql>
 +WITH nom_alias AS (
 + SELECT *
 + , ROW_NUMBER() OVER(PARTITION BY userid ORDER BY datecreation DESC) AS position
 + FROM table_a_filtrer
 +)
 +SELECT
 + ...
 +FROM
 + nom_alias f
 +INNER JOIN
 + ...
 +WHERE
 + f.position = 1 -- uniquement dernier document
 + AND ...
 +ORDER BY ...
 +</code>
 +
 +
 ====== INSERT ====== ====== INSERT ======
  
Ligne 344: Ligne 409:
 Doc : [[http://www.postgresql.org/docs/9.0/static/sql-createtableas.html|PostgreSQL]] Doc : [[http://www.postgresql.org/docs/9.0/static/sql-createtableas.html|PostgreSQL]]
  
 +Testé avec M$ SQL Server :
  
 +<code sql>
 +SELECT *
 +INTO destination
 +FROM source;
 +</code>
 +
 +Doc : https://learn.microsoft.com/en-us/sql/t-sql/queries/select-into-clause-transact-sql
 ====== ALTER TABLE ====== ====== ALTER TABLE ======
  
Ligne 352: Ligne 425:
         nouveau2  VARCHAR2(3)         nouveau2  VARCHAR2(3)
    );     ); 
 +</code>
 +
 +====== MSSQL : lier un utilisateur à une connexion ======
 +
 +<code sql>
 +USE NomDelaBase
 +GO
 +
 +ALTER USER Utilisateur WITH LOGIN = Connexion
 +GO
 +</code>
 +
 +====== MSSQL : copier des tables d'un schéma à un autre ======
 +
 +> Use the Generate Scripts Wizard in SSMS for generating the script for constraints and indexes.
 +>
 +>Follow these steps:
 +>
 +>1. Open SSMS
 +>2. Expand databases and select the database->tasks->generate scripts to launch the GSW
 +>3. click next and set "Script Check Constraints" to true, "Script Indexes " to true, "ScriptDependencies" to true and set whatever is needed.
 +>4. Select the tables for which the script is needed
 +>5. Click next ->next->finish
 +>
 +>This generates the script for table with indexes, constraints etc.
 +>
 +>More information: http://msdn.microsoft.com/en-us/library/ms178078.aspx
 +
 +Source : https://social.msdn.microsoft.com/Forums/en-US/17a16dc4-dcf1-4de8-baba-6949c55a4c5d/copy-constraints-and-indexes-from-one-database-to-another?forum=transactsql
 +
 +====== MSSQL : trouver les verrous sur une table ======
 +
 +<code sql>
 +SELECT 
 + object_name(object_id) AS objet_bloque, 
 +    lock.resource_type,
 +    db.name AS db_name,
 +    lock.resource_associated_entity_id,
 +    lock.request_mode,
 +    lock.request_session_id,
 +    task.blocking_session_id,
 +    task.*
 +FROM sys.dm_tran_locks lock
 +INNER JOIN sys.partitions p ON p.hobt_id= lock.resource_associated_entity_id
 +INNER JOIN sys.databases db ON db.database_id = lock.resource_database_id
 +LEFT JOIN sys.dm_os_waiting_tasks as task
 +    ON lock.lock_owner_address = task.resource_address
 +LEFT JOIN sys.dm_os_tasks AS STasks
 +    ON STasks.task_address = task.waiting_task_address
 +WHERE resource_database_id = 20 AND object_name(object_id) = 'NOM_DE_LA_TABLE'
 </code> </code>
  
  • memo/sql.1563437109.txt.gz
  • Dernière modification : il y a 7 ans
  • de Arnaud Jacquemin