Я разработал функцию для split string в tsql, но mysql не имеет встроенных функций. Мне нужно было функционировать в MYSQL, поскольку я новичок в mysql. Функция должна принимать 2 параметра 1. Строка, подлежащая разделению 2. разделитель (',' или что-то еще) Просьба ответить.Как преобразовать TSQL-запрос в запрос MYSQL?
ответ
я нашел решение в Интернете, вы можете в этом.
DELIMITER //
DROP FUNCTION IF EXISTS `splitAndTranslate` //
CREATE FUNCTION splitAndTranslate(str TEXT, delim VARCHAR(124))
RETURNS TEXT
DETERMINISTIC
BEGIN
DECLARE i INT DEFAULT 0; -- total number of delimiters
DECLARE ctr INT DEFAULT 0; -- counter for the loop
DECLARE str_len INT; -- string length,self explanatory
DECLARE out_str text DEFAULT ''; -- return string holder
DECLARE temp_str text DEFAULT ''; -- temporary string holder
DECLARE temp_val VARCHAR(255) DEFAULT ''; -- temporary string holder for query
-- get length
SET str_len=LENGTH(str);
SET i = (LENGTH(str)-LENGTH(REPLACE(str, delim, '')))/LENGTH(delim) + 1;
-- get total number delimeters and add 1
-- add 1 since total separated values are 1 more than the number of delimiters
-- start of while loop
WHILE(ctr<i) DO
-- add 1 to the counter, which will also be used to get the value of the string
SET ctr=ctr+1;
-- get value separated by delimiter using ctr as the index
SET temp_str = REPLACE(SUBSTRING(SUBSTRING_INDEX(str, delim, ctr), LENGTH(SUBSTRING_INDEX(str, delim,ctr - 1)) + 1), delim, '');
-- query real value and insert into temporary value holder, temp_str contains the exploded ID
SELECT <real_value_column> INTO temp_val FROM <my_table> WHERE <table_id>=temp_str;
-- concat real value into output string separated by delimiter
SET out_str=CONCAT(out_str, temp_val, ',');
END WHILE;
-- end of while loop
-- trim delimiter from end of string
SET out_str=TRIM(TRAILING delim FROM out_str);
RETURN(out_str); -- return
END//
ссылка http://www.slickdev.com/2008/09/15/mysql-query-real-values-from-delimiter-separated-string-ids/
спасибо за помощь - @ ehtasham я буду смотреть в то, что тогда сообщит вам об этом –
В mysql они не поддерживают некоторые функции, такие как sqlserver. так spliting будет трудно в MySQL
SELECT e.`studentId`, SPLIT(",", c.`courseNames`)[e.`courseId`]
ОТ ..
SELECT TRIM(SUBSTRING_INDEX(yourcolumn,',',1)), TRIM(SUBSTRING_INDEX(yourcolumn,',',-1)) FROM yourtable
Если 'yourcolumn' содержит более одного символа разделителя (запятая в этом примере), первое выражение вернет часть строки до первого разделителя, а второе выражение будет возвращать часть строки после последнего разделителя. Например, при задании '' abc, def, ghi'' первое выражение возвращает '' abc'', второе выражение возвращает '' ghi''. – spencer7593
требуется время, но это решение, поэтому мне нужно перейти в lop для длины строки, а затем установить индекс. но теперь часть заключается в том, что использование цикла в запросе mysql @Ehtasham –
CREATE FUNCTION [dbo].[SplitString]
(
@RowData nvarchar(2000),
@SplitOn nvarchar(5)
)
RETURNS @RtnValue table
(
--Id int identity(1,1),
Data nvarchar(100)
)
AS
BEGIN
Declare @Cnt int
Set @Cnt = 1
While (Charindex(@SplitOn,@RowData)>0)
Begin
Insert Into @RtnValue (data)
Select
Data = ltrim(rtrim(Substring(@RowData,1,Charindex(@SplitOn,@RowData)-1)))
Set @RowData = Substring(@RowData,Charindex(@SplitOn,@RowData)+1,len(@RowData))
Set @Cnt = @Cnt + 1
End
Insert Into @RtnValue (data)
Select Data = ltrim(rtrim(@RowData))
Return
END
возвращает все значения, подобные строкам, и я могу использовать его в where where. Но мне это нужно в mysql. я пробовал много googling его и myslef, но еще не удалось –
- 1. Как преобразовать MySQL-запрос в запрос HQL?
- 2. как преобразовать запрос MySQL в PHP запрос
- 3. как преобразовать запрос mysql в запрос zend?
- 4. Как преобразовать сложный MySQL-запрос в Doctrine2
- 5. Как правильно преобразовать mySQL-запрос в PDO
- 6. Как преобразовать mysql-запрос в mongodb
- 7. Как преобразовать mysql-запрос в laravel 5?
- 8. Как преобразовать запрос MSSQL CTE в MySQL?
- 9. Как преобразовать обычный mysql-запрос в codeigniter
- 10. Как преобразовать запрос Mysql в реляционную алгебру?
- 11. Как преобразовать запрос MySQL в запрос Laravel Eloquent?
- 12. Как преобразовать mysql-запрос в запрос SQL Server?
- 13. Как преобразовать этот запрос MySQL в запрос Django?
- 14. Как преобразовать этот запрос mysql в запрос Rails
- 15. Как преобразовать этот запрос Microsoft SQL в запрос MySQL?
- 16. Необходимо преобразовать мс запрос в MySQL Query
- 17. Преобразовать запрос из Mysql в красноречивых Laravel
- 18. Преобразовать запрос из MySQL в sqlite3
- 19. Преобразовать MYSQL запрос в Laravel Eloquent ОРМ
- 20. преобразовать запрос из sqlite3 в MySQL
- 21. Помогите мне преобразовать запрос доступа MS в запрос MySQL?
- 22. please Как преобразовать mysql-запрос в pdo в моем коде?
- 23. Как преобразовать условный внутренний запрос в LEFT JOIN в MYSQL?
- 24. Как преобразовать запрос в django ORM
- 25. Как преобразовать MySQL-запрос в активные записи codeigniter?
- 26. Как я могу преобразовать это в запрос mysql
- 27. Как преобразовать mysql-запрос в laravel query builder
- 28. Как преобразовать конкретный запрос mysql-платформы в не-платформенный?
- 29. Как преобразовать запрос вставки из php-mysql в php-oracle?
- 30. Как я могу преобразовать этот запрос MySQL в Postgres 9.4
возможно дубликат [конвертировать TSQL в MySQL] (http://stackoverflow.com/questions/2986404/convert-tsql-to-mysql) –
Вы можете использовать 'SUBSTRING (@ orig, LOCATE (@findstr, @orig)) ' – MiltoxBeyond
Каков результат вашей функции« split string »T-SQL? Мы можем легко написать функцию MySQL, которая принимает два параметра. Жесткая часть подражает тому, что делает ваша функция «split string» SQL Server. – spencer7593