且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

sql server 模仿mysql的方法

更新时间:2022-06-15 06:24:14

Java代码  sql server 模仿mysql的方法
  1. <?php  
  2. /** 
  3.  * ============================================================================ 
  4.  *    名称: util_sysdate 
  5.  *  描述: 模拟mysql中sysdate() 
  6.  *  作者: david 
  7.  * ============================================================================ 
  8.  */  
  9. function util_sysdate()  
  10. {  
  11.     if ($this->config['db_dsn']['phptype'] == 'mssql') {  
  12.         $value_returned = 'getdate()';  
  13.     } elseif ($this->config['db_dsn']['phptype'] = 'mysql') {  
  14.         $value_returned = 'sysdate()';  
  15.     } else {  
  16.         $value_returned = 'sysdate';  
  17.     }  
  18.     return $value_returned;  
  19. }  
  20.   
  21. /** 
  22.  * ============================================================================ 
  23.  *    名称: util_ifnull 
  24.  *  描述: 模拟mysql中ifnull() 
  25.  *  参数: $check_value : 要检查的值 
  26.  *          $isnull_return : 当$check_value为null时,返回的值 
  27.  *  作者: david 
  28.  * ============================================================================ 
  29.  */  
  30. function util_ifnull($check_value, $isnull_return)  
  31. {  
  32.     if ($this->config['db_dsn']['phptype'] == 'mssql') {  
  33.         $value_returned = ($isnull_return == '') ? 'isnull(' . $check_value . ',\'\')' : 'isnull(' . $check_value . ',' . $isnull_return . ')';  
  34.     } elseif ($this->config['db_dsn']['phptype'] = 'mysql') {  
  35.         $value_returned = ($isnull_return == '') ? 'ifnull(' . $check_value . ',\'\')' : 'ifnull(' . $check_value . ',' . $isnull_return . ')';  
  36.     } else {  
  37.         $value_returned = ($isnull_return == '') ? 'nvl(' . $check_value . ',\'\')' : 'nvl(' . $check_value . ',' . $isnull_return . ')';  
  38.     }  
  39.     return $value_returned;  
  40. }  
  41.   
  42. /** 
  43.  * ============================================================================ 
  44.  *    名称: util_lower 
  45.  *  描述: 模拟mysql中lower() 
  46.  *  参数: $value : 要改变的值 
  47.  *  作者: david 
  48.  * ============================================================================ 
  49.  */  
  50. function util_lower($lower_value)  
  51. {  
  52.     if ($this->config['db_dsn']['phptype'] == 'mssql') {  
  53.         $value_returned = 'lower(' . $lower_value . ')';  
  54.     } elseif ($this->config['db_dsn']['phptype'] = 'mysql') {  
  55.         $value_returned = 'lower(' . $lower_value . ')';  
  56.     } else {  
  57.         $value_returned = 'lower(' . $lower_value . ')';  
  58.     }  
  59.     return $value_returned;  
  60. }  
  61.   
  62. /** 
  63.  * ============================================================================ 
  64.  *    名称: util_top 
  65.  *  描述: 模拟mssql中top 
  66.  *  参数: $sql : 要执行的sql语句 
  67.  *          $top_value : 取执行$sql所返回结果集的记录数 
  68.  *  作者: david 
  69.  * ============================================================================ 
  70.  */  
  71. function util_top($sql, $top_value)  
  72. {  
  73.     if ($this->config['db_dsn']['phptype'] == 'mssql') {  
  74.         $sql = trim($sql);  
  75.         $sql = substr_replace($sql, 'select top ' . $top_value, 06);  
  76.         $value_returned = $sql;  
  77.     } elseif ($this->config['db_dsn']['phptype'] == 'mysql') {  
  78.         $sql = $sql . ' limit 0,' . $top_value;  
  79.         $value_returned = $sql;  
  80.     } else {  
  81.         $pos = strripos($sql, 'where');  
  82.         $top_value++;  
  83.         $sql = substr_replace($sql, 'where rownum <' . $top_value . ' and ', $pos, 5);  
  84.         $value_returned = $sql;  
  85.     }  
  86.     return $value_returned;  
  87. }  
  88.   
  89. /** 
  90.  * ============================================================================ 
  91.  *    名称: util_date_format 
  92.  *  描述: 模拟mssql中convert(date_type,datetime,style) 
  93.  *  参数: $format_date : 要格式化的日期值 
  94.  *   $format_type : 返回的类型 
  95.  *      112 ------- yyyymmdd 
  96.  *      111 ------- yyyy/mm/dd 
  97.  *      120 ------- yyyy-mm-dd 
  98.  *  作者: david 
  99.  * ============================================================================ 
  100.  */  
  101. function util_date_format($format_date, $format_type = 112)  
  102. {  
  103.     if ($this->config['db_dsn']['phptype'] == 'mssql') {  
  104.         $value_returned = 'convert(char(10),' . $format_date . ',' . $format_type . ')';  
  105.     } elseif ($this->config['db_dsn']['phptype'] = 'mysql') {  
  106.         if ($format_type == 112) {  
  107.             $value_returned = 'date_format(' . $format_date . ',\'%Y%m%d\')';  
  108.         } elseif ($format_type == 111) {  
  109.             $value_returned = 'date_format(' . $format_date . ',\'%Y/%m/%d\')';  
  110.         } elseif ($format_type == 120) {  
  111.             $value_returned = 'date_format(' . $format_date . ',\'%Y-%m-%d\')';  
  112.         }  
  113.     } else {  
  114.         if ($format_type == 112) {  
  115.             $value_returned = 'to_date(' . $format_date . ',\'yyyymmdd\')';  
  116.         } elseif ($format_type == 111) {  
  117.             $value_returned = 'to_date(' . $format_date . ',\'yyyy/mm/dd\')';  
  118.         } elseif ($format_type == 120) {  
  119.             $value_returned = 'to_date(' . $format_date . ',\'yyyy-mm-dd\')';  
  120.         }  
  121.     }  
  122.     return $value_returned;  
  123. }  
  124.   
  125. /** 
  126.  * ============================================================================ 
  127.  * 名称: util_date_diff 
  128.  * 描述: 模拟mssql中datediff() 
  129.  * 参数: 
  130.  * $datepart: 返回的差异类型 
  131.  * day  ------  天数 
  132.  * year  ------  年数 
  133.  * month  ------  月数 
  134.  * week  ------  周数 
  135.  * hour  ------  小时 
  136.  * minute  ------  分钟 
  137.  * second  ------  秒数 
  138.  * $startdate: 时间较小值 
  139.  * $enddate: 时间较大值 
  140.  * 作者: david 
  141.  * ============================================================================ 
  142.  */  
  143. function util_date_diff($datepart, $startdate, $enddate)  
  144. {  
  145.     if ($this->config['db_dsn']['phptype'] == 'mssql') {  
  146.         if ($datepart == 'day') {  
  147.             $value_returned = 'datediff(day,' . $startdate . ',' . $enddate . ')';  
  148.         }  
  149.     } elseif ($this->config['db_dsn']['phptype'] = 'mysql') {  
  150.         if ($datepart == 'day') {  
  151.             $value_returned = '(to_days(' . $enddate . ')-to_days(' . $startdate . '))';  
  152.         }  
  153.     } else {  
  154.         //Oracle;  
  155.     }  
  156.     return $value_returned;  
  157. }  
  158.   
  159. /** 
  160.  * ============================================================================ 
  161.  * 名称: util_length 
  162.  * 描述: 模拟mysql中length() 
  163.  * 参数:  返回的差异类型 
  164.  * 作者: david 
  165.  * ============================================================================ 
  166.  */  
  167. function util_length($value)  
  168. {  
  169.     if ($this->config['db_dsn']['phptype'] == 'mssql') {  
  170.         $value_returned = 'len(' . $value . ')';  
  171.     } elseif ($this->config['db_dsn']['phptype'] = 'mysql') {  
  172.         $value_returned = 'length(' . $value . ')';  
  173.     } else {  
  174.         //Oracle;  
  175.     }  
  176.     return $value_returned;  
  177. }  
  178.   
  179. /** 
  180.  * ============================================================================ 
  181.  * 名称: util_RowNum 
  182.  * 描述: 模拟mssql中ROW_NUMBER() 
  183.  * 参数: 
  184.  * 作者: david 
  185.  * ============================================================================ 
  186.  */  
  187.   
  188. function util_RowNum($value)  
  189. {  
  190.     if ($this->config['db_dsn']['phptype'] == 'mssql') {  
  191.         $value_returned = ' ROW_NUMBER() OVER(ORDER BY sum(' . $value . ') DESC)';  
  192.     } elseif ($this->config['db_dsn']['phptype'] = 'mysql') {  
  193.         $value_returned = ' RowNum()';  
  194.     } else {  
  195.         //Oracle;  
  196.     }  
  197.     return $value_returned;  
  198. }  
  199.   
  200. /** 
  201.  * ============================================================================ 
  202.  * 名称: util_dbo 
  203.  * 描述: mssql时用户函数需要加上dbo前缀。 
  204.  * 参数: $value:用户函数名称 
  205.  * 作者: david 
  206.  * ============================================================================ 
  207.  */  
  208.   
  209. function util_dbo($value)  
  210. {  
  211.     if ($this->config['db_dsn']['phptype'] == 'mssql') {  
  212.         $value_returned = 'dbo.' . $value;  
  213.     } elseif ($this->config['db_dsn']['phptype'] = 'mysql') {  
  214.         $value_returned = $value;  
  215.     } else {  
  216.         //Oracle;  
  217.     }  
  218.     return $value_returned;  
  219. }  
  220.   
  221. /** 
  222.  * ============================================================================ 
  223.  * 名称: util_last_insert_id 
  224.  * 描述: 模拟mysql函数last_insert_id() 
  225.  * 作者: david 
  226.  * ============================================================================ 
  227.  */  
  228.   
  229. function util_last_insert_id()  
  230. {  
  231.     if ($this->config['db_dsn']['phptype'] == 'mssql') {  
  232.         $value_returned = '@@IDENTITY';  
  233.     } elseif ($this->config['db_dsn']['phptype'] = 'mysql') {  
  234.         $value_returned = 'last_insert_id()';  
  235.     } else {  
  236.         //Oracle;  
  237.     }  
  238.     return $value_returned;  
  239. }  
  240.   
  241. /** 
  242.  * ============================================================================ 
  243.  * 名称: util_date_add 
  244.  * 描述: 模拟mysql函数date_add() 
  245.  * 参数: 
  246. $datepart: 新增时间类型 
  247. day  ------  天数 
  248. year  ------  年数 
  249. month  ------  月数 
  250. week  ------  周数 
  251. hour  ------  小时 
  252. minute  ------  分钟 
  253. second  ------  秒数 
  254. $startdate:起始日期 
  255. $value: 新增时间数值 
  256.  * 作者: david 
  257.  * ============================================================================ 
  258.  */  
  259.   
  260. function util_date_add($datepart, $startdate, $value)  
  261. {  
  262.     if ($this->config['db_dsn']['phptype'] == 'mssql') {  
  263.         $value_returned = 'dateadd(' . $datepart . ',' . $value . ',' . $startdate . ')';  
  264.     } elseif ($this->config['db_dsn']['phptype'] = 'mysql') {  
  265.         $value_returned = 'date_add(' . $startdate . ',interval ' . $value . ' ' . $datepart . ')';  
  266.     } else {  
  267.         //Oracle;  
  268.     }  
  269.     return $value_returned;  
  270. }