Source for file sqlsrv.php
Documentation is available at sqlsrv.php
* @package Joomla.Platform
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
* @package Joomla.Platform
* The character(s) used to quote SQL statement names such as table names or field names,
* etc. The child classes should define this as necessary. If a single character string the
* same character is used for both sides of the quoted name, else the first character will be
* used for the opening quote and the second for the closing quote.
* The null or zero representation of a timestamp for the database driver. This should be
* defined in child classes to hold the appropriate value for the engine.
* @var integer The affected row limit for the current SQL statement.
* @var integer The affected row offset to apply for the current SQL statement.
* Magic function to convert the query to a string.
* @return string The completed query.
$query .= (string)
$this->select;
$query .= (string)
$this->from;
$query .= (string)
$this->order;
// Special case for joins
foreach ($this->join as $join)
$query .= (string)
$join;
$query .= (string)
$this->where;
$query .= (string)
$this->group;
$query .= (string)
$this->having;
$query .= (string)
$this->insert;
$query .= (string)
$this->set;
$elements =
$this->insert->getElements();
$query .= (string)
$this->values;
$query =
'SET IDENTITY_INSERT ' .
$tableName .
' ON;' .
$query .
'SET IDENTITY_INSERT ' .
$tableName .
' OFF;';
$query .= (string)
$this->where;
* Casts a value to a char.
* Ensure that the value is properly quoted before passing to the method.
* @param string $value The value to cast as a char.
* @return string Returns the cast value.
return 'CAST(' .
$value .
' as NVARCHAR(10))';
* Gets the function to determine the length of a character string.
* @param string $field A value.
* @param string $operator Comparison operator between charLength integer value and $condition
* @param string $condition Integer value to compare charLength with.
* @return string The required char length call.
public function charLength($field, $operator =
null, $condition =
null)
return 'DATALENGTH(' .
$field .
')' .
(isset
($operator) && isset
($condition) ?
' ' .
$operator .
' ' .
$condition :
'');
* Concatenates an array of column names or values.
* @param array $values An array of values to concatenate.
* @param string $separator As separator to place between each value.
* @return string The concatenated values.
public function concatenate($values, $separator =
null)
return '(' .
implode('+' .
$this->quote($separator) .
'+', $values) .
')';
return '(' .
implode('+', $values) .
')';
* Gets the current date and time.
* Get the length of a string in bytes.
* @param string $value The string to measure.
public function length($value)
return 'LEN(' .
$value .
')';
* Add to the current date and time.
* $query->select($query->dateAdd());
* Prefixing the interval with a - (negative sign) will cause subtraction to be used.
* @param datetime $date The date to add to; type may be time or datetime.
* @param string $interval The string representation of the appropriate number of units
* @param string $datePart The part of the date to perform the addition on
* @return string The string with the appropriate sql for addition of dates
* @note Not all drivers support all units.
* @link http://msdn.microsoft.com/en-us/library/ms186819.aspx for more information
public function dateAdd($date, $interval, $datePart)
return "DATEADD('" .
$datePart .
"', '" .
$interval .
"', '" .
$date .
"'" .
')';
* Method to modify a query already in string format with the needed
* additions to make the query limited to a particular number of
* results, or start at a particular offset.
* @param string $query The query in string format
* @param integer $limit The limit for the result set
* @param integer $offset The offset for the result set
$orderBy =
stristr($query, 'ORDER BY');
if (is_null($orderBy) ||
empty($orderBy))
$orderBy =
'ORDER BY (select 0)';
$rowNumberText =
', ROW_NUMBER() OVER (' .
$orderBy .
') AS RowNumber FROM ';
$query =
preg_replace('/\sFROM\s/i', $rowNumberText, $query, 1);
$query =
'SELECT * FROM (' .
$query .
') _myResults WHERE RowNumber BETWEEN ' .
$start .
' AND ' .
$end;
* Sets the offset and limit for the result set, if the database driver supports it.
* $query->setLimit(100, 0); (retrieve 100 rows, starting at first record)
* $query->setLimit(50, 50); (retrieve 50 rows, starting at 50th record)
* @param integer $limit The limit for the result set
* @param integer $offset The offset for the result set
* @return JDatabaseQuery Returns this object to allow chaining.
public function setLimit($limit =
0, $offset =
0)
$this->limit = (int)
$limit;
$this->offset = (int)
$offset;
Documentation generated on Tue, 19 Nov 2013 15:14:17 +0100 by phpDocumentor 1.4.3