我想爲上述三個DBMS使用相同的sql語句..但問題是它有字符串連接涉及但每個dbms中有不同的方式進行連接操作。 。但我想要單個操作員..需要別人的幫助相同的SQL連接opeartor爲mysql,mssql,oracle
回答
你也許可以在你的應用程序代碼中使用佔位符來連接你的sql語句,然後用正確的rdbms樣式代替它使用:
select {conpre} myfield1 {conmid} myfield2 {conmid} myfield3 {conend}
from mytable
然後,在僞碼:
if rdbms is sqlserver
conpre = ""
conmid = " + "
conend = ""
else if rdbms is mysql
conpre = "concat("
conmid = ", "
conend = ")"
else if rdbms is oracle
conpre = ""
conmid = " || "
conend = ""
else if
' etc...
end if
stmt = replace(stmt, "{conpre}", conpre)
stmt = replace(stmt, "{conmid}", conmid)
stmt = replace(stmt, "{conend}", conend)
對不起...它是不是我期望的答案如果這是...那麼我爲什麼不在編程中處理這個問題.. –
對於你的「問題」的正確答案是「否」。只是想我會提供另一個建議,更有幫助。 – mellamokb
這是可能的,我想。看到我的答案。 –
我會避免編寫自己的解決方案,並使用已有的多數據庫工具之一。如果您遇到此問題,一旦您很快會再次遇到此問題。
我不附屬於以下,但你可以嘗試Datanamic Multirun
答案很簡單,這個問題似乎沒有。
但是...
如果您在Oracle中創建軟件包dbo,該怎麼辦? 在一個名爲dbo的單獨數據庫中創建一個名爲concat的函數時,是不是也可以使用dbo.concat(a,b,c)來調用函數?
不幸的是,MySQL不支持默認參數(除非最近更改)或函數重載,所以你必須創建函數的參數每個號碼:
concat2(S1,S2)
concat3(s1,s2,s3)
等等。
有這樣使用ODBC轉義序列
SELECT {fn concat (col1, {fn concat (col2, col3)})}
FROM YourTable
從my current understanding這將在SQL Server和MySQL做工精細的方式,但對於甲骨文取決於連接方法。
+1哇!我從來沒有聽說過這些。好主意! – mellamokb
但是,這隻會通過ODBC連接,對不對? –
@a_horse_with_no_name - 我不完全清楚。在SQL Server中,似乎連接不可知。你可以在定義中用這個創建一個存儲過程,並且它在文本中用'fn concat'緩存一個計劃,而不是在驅動程序到達SQL Server之前被它重寫。稍後我可能會在dba.stackexchange.com上發佈一個關於它的問題 –
MySQL的:
SELECT CONCAT('New ', 'York ', 'City');
輸出是:紐約市
甲骨文:
SELECT 'The city' || ' is ' || 'Paris' FROM dual;
輸出是:這個城市是巴黎
SQL服務器:
SELECT 'The city' + ' is ' + 'Paris';
輸出是:這個城市是巴黎
SELECT CONCAT('The city', ' is ', 'Paris');
輸出是:這個城市是巴黎
- 1. PHP中的MySQL,MSSQL和Oracle的標準連接庫
- 2. pyQT和MySQL或MSSQL連接
- 3. 在Oracle SQL中連接兩次相同的表格
- 4. Codeigniter - 如何連接ORACLE,MySQL和SQL Server?
- 5. 基於相同編號和順序的MSSQL連接行
- 6. 連接Oracle和mySQL的PHP
- 7. SQL與多個連接相同的表
- 8. 從MSSQL連接
- 9. CodeIgniter MSSQL連接
- 10. 將舊的Oracle連接轉換爲ANSI SQL連接
- 11. 如何使用MSSQL(SQL Server)連接Codeigniter?
- 12. PHP PDO - dblib MSSQL - SQL連接問題
- 13. php連接與mssql(sql server 2012)
- 14. 內連接和左連接在相同的SQL查詢
- 15. Java API連接到任何種類的數據庫(oracle,mysql,mssql,db2,h2等)
- 16. 字段名稱相同時SQL連接
- 17. sql oracle連接兩個sql的輸出
- 18. Oracle SQL Developer連接存儲
- 19. Oracle SQL全外連接
- 20. 將Pyspark連接到Oracle SQL
- 21. SQL查詢連接表 - Oracle
- 22. Oracle SQL內部連接
- 23. Oracle SQL左外部連接
- 24. mssql連接狀態
- 25. SQL:將具有相同ID的行拆分爲列+左連接
- 26. Linux中的MSSQL ODBC連接
- 27. 在不同的PHP頁面中使用相同的MySQL連接
- 28. nodejs使用node-mssql連接mssql
- 29. Oracle和MSSQL都瞭解的診斷SQL
- 30. MSSQL和MySQL作爲鏈接服務器
不太可能發生,但一個例子你想要什麼/ wanting會有幫助 –
Denali具有'CONCAT'功能,但在此之前在TSQL中,您被'+' –
卡住了嗎?是否可以在sql server中定義concat函數..與mysql中的CONCAT相同,oracle –