Function to shorten a string : Function « Procedure Function « SQL / MySQL






Function to shorten a string

       
mysql>
mysql> delimiter $$
mysql>
mysql>
mysql> CREATE FUNCTION shorten(s VARCHAR(255), n INT)
    ->  RETURNS VARCHAR(255)
    ->  BEGIN
    ->     IF ISNULL(s) THEN
    ->        RETURN '';
    ->     ELSEIF n<15 THEN
    ->        RETURN LEFT(s, n);
    ->     ELSE IF CHAR_LENGTH(s) <= n THEN
    ->            RETURN s;
    ->         ELSE
    ->            RETURN CONCAT(LEFT(s, n-10), ' ... ', RIGHT(s, 5));
    ->         END IF;
    ->     END IF;
    ->  END$$
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> SELECT shorten("abcdefghijklmnopqrstuvwxyz", 15)$$
+-------------------------------------------+
| shorten("abcdefghijklmnopqrstuvwxyz", 15) |
+-------------------------------------------+
| abcde ... vwxyz                           |
+-------------------------------------------+
1 row in set (0.00 sec)

mysql>
mysql> delimiter ;
mysql>
mysql> CREATE TABLE titles (
    ->   titleID int(11),
    ->   title varchar(100),
    ->   subtitle varchar(100),
    ->   edition tinyint(4),
    ->   publID int(11),
    ->   catID int(11),
    ->   langID int(11),
    ->   year int(11),
    ->   isbn varchar(20),
    ->   comment varchar(255),
    ->   ts timestamp,
    ->   authors varchar(255),
    ->   PRIMARY KEY  (titleID)
    -> );
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql>
mysql>
mysql> INSERT INTO titles VALUES (1,'Linux','Installation',5,1,57,2,2000,NULL,NULL,'2005-02-28 13:34:21','Michael'),
    ->                           (2,'Excel',NULL,NULL,2,3,NULL,2000,NULL,NULL,'2005-02-28 13:34:22','David'),
    ->                           (3,'XML',NULL,NULL,1,2,NULL,1997,NULL,NULL,'2005-02-28 13:34:22','Edwards'),
    ->                           (4,'PHP',NULL,NULL,3,6,NULL,2000,NULL,NULL,'2005-02-28 13:34:22','Tom'),
    ->                           (5,'MySQL','',0,3,34,NULL,2000,'','','2005-02-28 13:34:22','Paul'),
    ->                           (6,'Java',NULL,NULL,4,34,NULL,1999,NULL,NULL,'2005-02-28 13:34:22','Tim');
Query OK, 6 rows affected (0.00 sec)
Records: 6  Duplicates: 0  Warnings: 0

mysql>
mysql>
mysql>
mysql>
mysql> SELECT title, shorten(title, 2) FROM titles LIMIT 10;
+-------+-------------------+
| title | shorten(title, 2) |
+-------+-------------------+
| Linux | Li                |
| Excel | Ex                |
| XML   | XM                |
| PHP   | PH                |
| MySQL | My                |
| Java  | Ja                |
+-------+-------------------+
6 rows in set (0.00 sec)

mysql>
mysql>
mysql> drop table titles;
Query OK, 0 rows affected (0.00 sec)

mysql> drop function shorten;
Query OK, 0 rows affected (0.00 sec)

mysql>

   
    
    
    
    
    
    
  








Related examples in the same category

1.Creating Functions
2.A function that takes a parameter, performs an operation using an SQL function, and returns the result
3.Single statement function
4.Nested function call
5.Using buildin function in user-defined function
6.To remove a stored function, use the DROP command
7.Create a procedure for 'READS SQL DATA'
8.Math calculation in a function
9.Calculate number of day